
adruiz
Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
A ver si alguien puede echarme un clave con esto.
Tengo un objeto json que convierto en un array mediante json_decode, dicho array contiene múltiples arrays con dos valores cada uno, precios y fechas. Lo que me interesa es obtener el array que contiene el precio más alto, esto lo estaba haciendo con un simple max($arr) que parecía funcionar bien, hasta que me he encontrado casos que en realidad no me devuelve el precio más alto.
He probado también con max(array_column($arr, 'price')) y ocurre lo mismo, pero de todos modos esta solución no me interesa porque lo que busco no es obtener el valor más alto, sino el array que lo contiene.
Dejo por aquí un código de ejemplo:
Ambos var_dump devuelven el array de 70 € (o 70 € en el caso del segundo), lo podéis comprobar directamente aquí.
He trasteado con el date y no parece afectar de ningún modo al max(), también probando los números en limpio (sin el €) y el resultado es el mismo, si fuera el caso de que tuviera que sanitizarlos al hacer la comparación ahora mismo no caigo en cómo podría hacerlo, pero ya adelanto que no se pueden modificar en el json original, porque son datos extraídos de una base de datos.
¿Alguna sugerencia? Os voy leyendo.
Gracias de antemano 👍
Tengo un objeto json que convierto en un array mediante json_decode, dicho array contiene múltiples arrays con dos valores cada uno, precios y fechas. Lo que me interesa es obtener el array que contiene el precio más alto, esto lo estaba haciendo con un simple max($arr) que parecía funcionar bien, hasta que me he encontrado casos que en realidad no me devuelve el precio más alto.
He probado también con max(array_column($arr, 'price')) y ocurre lo mismo, pero de todos modos esta solución no me interesa porque lo que busco no es obtener el valor más alto, sino el array que lo contiene.
Dejo por aquí un código de ejemplo:
PHP:
$arr = '[{"price": "70 €","date": "2020-12-05 06:45:21"},{"price": "102,2 €","date": "2021-12-05 16:45:21"}]';
$arr = json_decode($arr);
var_dump(max($arr));
var_dump(max(array_column($arr, 'price')));
Ambos var_dump devuelven el array de 70 € (o 70 € en el caso del segundo), lo podéis comprobar directamente aquí.
He trasteado con el date y no parece afectar de ningún modo al max(), también probando los números en limpio (sin el €) y el resultado es el mismo, si fuera el caso de que tuviera que sanitizarlos al hacer la comparación ahora mismo no caigo en cómo podría hacerlo, pero ya adelanto que no se pueden modificar en el json original, porque son datos extraídos de una base de datos.
¿Alguna sugerencia? Os voy leyendo.
Gracias de antemano 👍