2016-05-14 21 views
-1

我有此數組:如何排序數組的數組中的PHP

[0] => Array 
    (
     [0] => 0 
     [1] => 1 
    ) 

[1] => Array 
    (
     [0] => 3 
     [1] => 4 
    ) 

[2] => Array 
    (
     [0] => 2 
    ) 

我需要的值進行排序,以獲得陣列,通過單一的陣列值進行排序,如:

[0] => Array 
    (
     [0] => 0 
     [1] => 1 
    ) 

[2] => Array 
    (
     [0] => 2 
    ) 

[1] => Array 
    (
     [0] => 3 
     [1] => 4 
    ) 

值(0,1,2,3,4)是唯一的,代表一週的日子,所以我可以有最多7個唯一值。

我試過用usort但不成功。有任何想法嗎? 非常感謝

+3

1)顯示您的嘗試2)這是如何排序? (你會如何看起來像輸入是:[[1,100],[-1,50],[75]]?) – Rizier123

+0

Hi Rizier,值(0,1,2,3,4 )是獨一無二的,並代表了一週的日子,所以,我可以有最多7個獨特的價值... 我的企圖不是名人... –

回答

2

這取決於你想如何排序你的數組。在你的例子中,你將第二級數組從低到高排序,然後用第二級數組中的最低值對第一級數組排序,所以我會假設這就是你想要的。

你可以用usort來做這種事情,但我發現只是使用asort()而多一點的代碼有助於可讀性。

//Setup variables 
$start_array = array(array(0,1), array(3,4), array(2)); 
$lowest_value = array(); 
$sorted_array = array(); 

//Sort your inner arrays and build up a list of lowest values 
foreach($start_array as $key => $inner_array) { 
    sort($start_array[$key]); 
    $lowest_value[$key] = $start_array[$key][0]; 
} 

//Iterate over your lowest values and map to your new array 
asort($lowest_value); 
foreach($lowest_value as $key => $value){ 
    $sorted_array[] = $start_array[$key]; 
} 

請注意,這假設你想要你的第一級數組按第二級最低值排序。你可以通過$lowest_value[$key] = $start_array[$key][0];這一行來改變它,而不是你想要的內容來獲取內部數組的平均值,最高值。

+1

非常感謝喬希! –