Eğer dizinin boyutlarını bilmiyorum nerede, array_multisort kullanarak çok boyutlu dizi sıralama

1 Cevap php

Ben temelde her yıl için bir alt-dizide oluşan çok boyutlu bir dizi var. Ben veri üç yıl boğuştu Yani, örneğin, bu gibi görünebilir:

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

Şimdi yıllar birinin temelinde bu dizileri sıralamak mümkün olmak istiyorum. Örneğin, ben, ikinci yıla göre sıralamak isteyebilirsiniz hangi hepsi $ verilerin yeniden sipariş göre sıralanır olurdu durumda [1].

Ben array_multisort ile kolaylıkla yapabilirsiniz:

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

Bu iyi, ama orada olacak kaç yıl veri bilmiyorum. Ben argümanlar sadece doğru sayıda belirterek, bazı yol istiyorum, ama nasıl bilmiyorum php, ben sadece inanılmaz derecede acı görünüyor yıllarda olası her sayı için bir if deyimi var yoksa:

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...
}

Herkes daha iyi bir yol biliyor musun?

1 Cevap

Her zaman ilk parametre olarak array_multisort belirterek ve array_multisort geçirilecek parametreleri bir dizi bina, call_user_func_array kullanabilirsiniz. Gibi bir şey:

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