Как расположить массив json по максимальному и минимальному значению ключа?

Мне нужна одна помощь У меня есть один массив JSON, и мне нужно изменить его в соответствии с максимальным или минимальным значением ключа с помощью PHP. Я объясняю мой код ниже.

$data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
echo json_encode($data);

Его вывод будет идти, как показано ниже.

[{"day1":1,"day2":1,"name":"Ram"},{"day1":1,"day2":2,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":2,"day2":3,"name":"Rocky"}]

Здесь у меня есть другое значение для day1 and day2 в каждой записи. Мне нужно будет рассчитать минимальное значение для day1 и максимальное значение для day2 для каждой записи и мой ожидаемый результат должен выглядеть следующим образом.

ожидаемый результат:

[{"day1":1,"day2":3,"name":"Ram"},{"day1":1,"day2":3,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":1,"day2":3,"name":"Rocky"}]

1

Решение

Это поможет —

$data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
// Get all values for day1 & day2 and store them in one array
$values = array_merge(array_column($data, 'day2'), array_column($data, 'day1'));
// Assign values
$data = array_map(function($d) use($values) {
// Assign the minimum value
$d['day1'] = min($values);
// assign the maximum value
$d['day2'] = max($values);
return $d;
}, $data);

echo json_encode($data);

Выход

[{"day1":1,"day2":3,"name":"Ram"},{"day1":1,"day2":3,"name":"Raj"},{"day1":1,"day2":3,"name":"Rahul"},{"day1":1,"day2":3,"name":"Rocky"}]
2

Другие решения

это поможет: проверьте демонстрация

    $data=array(array("day1"=>1,"day2"=>1,"name"=>"Ram"),array("day1"=>1,"day2"=>2,"name"=>"Raj"),array("day1"=>1,"day2"=>3,"name"=>"Rahul"),array("day1"=>2,"day2"=>3,"name"=>"Rocky"));
$min = min(array_column($data, 'day1'));
$max = max(array_column($data, 'day2'));
$result = array_map(function($v) use($min, $max){$v['day1'] = $min; $v['day2'] = $max; return $v; }, $data);
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector