Foros del Web » Programando para Internet » PHP »

extraer el precio mas bajo de un array tridimensional

Estas en el tema de extraer el precio mas bajo de un array tridimensional en el foro de PHP en Foros del Web. Necesito extraer los dos precios mas bajo y su codigo con fecha de un array multidimensional ignorando los que tienen un valor 0 en su ...
  #1 (permalink)  
Antiguo 16/10/2018, 07:09
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
extraer el precio mas bajo de un array tridimensional

Necesito extraer los dos precios mas bajo y su codigo con fecha de un array multidimensional ignorando los que tienen un valor 0 en su valor. obteniendo su clave.



Array
(
[0] => Array
(
[precio] => 26
[codigo] => 10
[fecha] => 2018-2-10
)

[1] => Array
(
[precio] => 57
[codigo] => 12
[fecha] => 2018-3-10
)

[2] => Array
(
[precio] => 99
[codigo] => 13
[fecha] => 2018-6-10
)

[4] => Array
(
[precio] => 0
[codigo] => 14
[fecha] => 2018-7-10
)

)

es decir me tendria que mostrar los dos primeros, alguna manera de hacerlo, si se puede evitar con un bucle mejor, pero yo no encuentro la manera de hacerlo.

Última edición por azaz; 16/10/2018 a las 07:32
  #2 (permalink)  
Antiguo 16/10/2018, 08:59
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: extraer el precio mas bajo de un array tridimensional

Supongo que es son datos obtenidos desde SQL, si quieres evitar el loop, lo mas fácil seria ordenar y limitar los datos desde la consulta SQL
  #3 (permalink)  
Antiguo 16/10/2018, 11:48
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: extraer el precio mas bajo de un array tridimensional

Para complementar, si esos datos estan llegando como respuesta de un servicio web; puedes hacer una función que ordene por el campo precio.

Código PHP:
Ver original
  1. $array = [
  2.    
  3. 0 => [
  4.     'precio' => 99,
  5.     'codigo' => 13,
  6.     'fecha' => '2018-6-10',
  7. ],
  8.  
  9. 1 => [
  10.     'precio' => 26,
  11.     'codigo' => 10,
  12.     'fecha' => '2018-2-10',
  13. ],
  14.  
  15. 2 => [
  16.     'precio' => 57,
  17.     'codigo' => 12,
  18.     'fecha' => '2018-3-10',
  19. ],
  20.  
  21. 3 => [
  22.     'precio' => 15,
  23.     'codigo' => 10,
  24.     'fecha' => '2018-2-10',
  25. ],
  26.  
  27. 4 => [
  28.     'precio' => 10,
  29.     'codigo' => 12,
  30.     'fecha' => '2018-3-10',
  31. ],
  32.  
  33. 5 => [
  34.     'precio' => 0,
  35.     'codigo' => 12,
  36.     'fecha' => '2018-3-10',
  37. ],
  38.  
  39. ];
  40.  
  41. function get_lower_price_items(Array $items, $limit = 2) {
  42.     usort($items, function($a, $b){
  43.         return $a['precio'] < $b['precio'] ? -1 : 1;
  44.     });
  45.    
  46.     return array_slice( array_filter($items, function($item){
  47.                 return $item['precio'] > 0;
  48.            }),0,$limit);
  49. }
  50.  
  51. print_r(get_lower_price_items($array));
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 19/10/2018, 03:49
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: extraer el precio mas bajo de un array tridimensional

Cita:
Iniciado por ArturoGallegos Ver Mensaje
Supongo que es son datos obtenidos desde SQL, si quieres evitar el loop, lo mas fácil seria ordenar y limitar los datos desde la consulta SQL
Hola, gracias por responder, comentarte que esa opcion no me vale porque los datos ya los utilizo en ese orden, pero aparte necesito ordenar ese campo en ese orden para otro script aprovechando el array obtenido en esa consulta.

Gracias tambien a ti por responder, en principio parece que funciona la función.

saludos

Etiquetas: precio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:23.