2009-05-25 53 views
2

我有一個多維數組,基本上包含一個子陣列每年的維度排序多維數組。因此,舉例來說,如果我有三個一年的數據,它可能是這樣的:用在array_multisort,在那裏你不知道數組

$data[0] = Array(0,1,2,3,4,5,6,7); 
$data[1] = Array(6,5,4,3,6,7,8,9); 
$data[2] = Array(1,4,2,5,7,3,1,4); 

現在我希望能夠到的年份之一的基礎上的數組進行排序。例如,我可能要基於第二年進行排序,在這種情況下他們會所有排序的基礎上$重新排序的數據[1]。

我可以使用array_multisort做到這一點很容易:

array_multisort($data[1],SORT_ASC,$data[0],$data[2]); 

這很好,但我不知道如何將數據的多年會有。我想僅指定參數的正確數目的一些方式,但我不知道該怎麼做,在PHP中,除非我只是要有一個if語句爲每一個可能若干年後,這似乎令人難以置信的痛苦:

if ($num_years == 1) 
{ 
    array_multisort($data[$which_year],SORT_ASC); 
} 
else if ($num_years == 2) 
{ 
    array_multisort($data[$which_year],SORT_ASC,$data[0],$data[1]); // this does work, interestingly, in spite of the repetition... 
} 

任何人都知道一個更好的辦法?

回答

5

可以始終使用call_user_func_array,指定array_multisort作爲第一個參數,建立的參數的陣列要傳遞給在array_multisort。喜歡的東西:

$params = array(); 
foreach($data as $year){ 
    $params[] = $year; 
} 
call_user_func_array('array_multisort', $params); 
+0

啊!涼。這聽起來像我所需要的。我會嘗試一下。 – Ben 2009-05-25 21:00:30