簡體   English   中英

使用array_multisort對多維數組進行排序,而您不知道數組的維數

[英]Sorting multi-dimensional array using array_multisort, where you don't know the dimensions of the array

我有一個多維數組,基本上每年由一個子數組組成。 因此,例如,如果我有三年的數據,則可能看起來像這樣:

$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);

現在,我希望能夠根據一年的時間對這些數組進行排序。 例如,我可能想根據第二年進行排序,在這種情況下,它們都將根據$ data [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...
}

有人知道更好的方法嗎?

您始終可以使用call_user_func_array ,將array_multisort指定為第一個參數,並構建要傳遞給array_multisort的參數數組。 就像是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM