Ниже будет получить наибольшее значение у:
<?php
$json_data = file_get_contents('a.json');
$json = json_decode($json_data, true);
$max_value = max($json[1]["data"]);
echo $max_value['y'];
?>
И следующий будет получать массив с наибольшим значением у:
<?php
$json_data = file_get_contents('a.json');
$json = json_decode($json_data, true);
$max_value = max($json[1]["data"]);
print_r($max_value);
?>
Проблема с вашим скриптом заключалась в том, что вы пытались получить доступ к несуществующему массиву в строке 3, и вы не выбрали правильный массив $ max_value.
Предупреждение
Приведенный выше код работает только потому, что JSON OP, когда преобразуется в массив имеет элемент, он хочет, чтобы заказать его массив, в качестве первого индексированной стоимости.
Так как @MatsLindh указано ниже в комментариях, если у вас есть значение с ключом «x» вместо «y», независимо от того, где он находится в JSON, при условии, что это все еще самое низкое значение ключа, первое индексированное значение в массиве при преобразовании из JSON в массив.
Вы все еще можете иметь согласованные значения смешивания в JSON, если элемент, который вы хотите заказать, имеет ключ с наименьшим значением, поместив его в качестве первого элемента, проиндексированного в массиве. Например:
[{
"name": "Time",
"data": ["20:40", "20:45", "20:50"]
},
{
"name": "Values",
"data": [{
"y": 5774,
"v1": "Test1",
"v2": "20:40",
"Z" : 8000
},
{
"y": 5555,
"v1": "Test2",
"v2": "20:45",
"Abc": 6754
},
{
"y": 5235,
"v1": "Test3",
"v2": "20:50",
"v3": 6594
}]
}]
Если выше JSON прошли через мою первую функцию она будет возвращать желаемый результат ОП искали, однако.
[{
"name": "Time",
"data": ["20:40", "20:45", "20:50"]
},
{
"name": "Values",
"data": [{
"y": 5774,
"v1": "Test1",
"v2": "20:40",
"a": 897
},
{
"y": 5555,
"v1": "Test2",
"v2": "20:45"
},
{
"y": 5235,
"v1": "Test3",
"v2": "20:50"
}]
}]
С помощью этого набора JSON, элемент с ключом «а» портит порядок подсчитывать, так как она расположена в начале массива.
Заключение
Если вы знаете, что первое значение массива генерируемого из JSON всегда будет то, что вы хотите, чтобы рассчитывать на то мой код хорошо. В противном случае вам лучше использовать решение @ MatsLindh.
вы используете неправильную переменную, возможно, должно быть '$ max_value ['y']' non '$ max ['y']' – Naumov