2017-01-17 57 views
1

我需要一個幫助。我有一個json數組,我需要使用PHP按照最大或最小鍵值重新排列它。我在下面解釋我的代碼。如何根據最大和最小鍵值排列json數組?

$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"}] 
+0

而「day2」的最大值和最小值爲「day1」值分配給它們全部? –

+0

@SougataBose:是,分配day1和max值的最小值爲所有記錄分配day2。 – satya

+0

第1天和第2天的所有值中的最大值,最小值? –

回答

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")); 
// 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"}] 
+0

它似乎在工作。謝謝。 – satya

+0

很高興幫助.. –

+0

現在明白了。 +1 –

0

這將幫助:檢查demo

$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); 
相關問題