2015-12-08 220 views
0

2個數組進行排序我有此數組:如何通過價值

Array ( 
[order] => Array ([0] => 2 [1] => 1) 
[eventid] => Array ([0] => id_1 [1] => id_2) 
) 

現在我想獲得:

Array ( 
[order] => Array ([0] => 1 [1] => 2) 
[eventid] => Array ([0] => id_2 [1] => id_1) 
) 

基本上我想按訂單價值將數組排序。

回答

4

您將需要使用usort函數才能做到這一點。 (見documentation

我會建議其他陣列結構雖然,這樣的事情:

Array ( 
[0] => Array ([order] => 2, [eventid] => id_x) 
[1] => Array ([order] => 1, [eventid] => id_y) 
) 

然後,你可以像這樣的一個函數來排序的數組(PHP 5.3或更高版本):

function array_sort_by(&$array, $key, $descending = false) { 
    $sortByKey = 
     function ($a, $b) use ($key, $descending) { 
      if ($a[$key] === $b[$key]) { 
       return 0; 
      } 
      $return = $a[$key] < $b[$key] ? -1 : 1; 
      return ($descending ? -1 * $return : $return); 
     }; 

    usort($array, $sortByKey); 
} 

你會然後調用以下:

array_sort_by($yourArray, 'order'); 
+0

愛你!我不得不改變一些HTML形式的屬性來改變數組佈局,但現在它的工作原理!謝謝! –

0

您可以ü se asort。雖然它可以涵蓋您的案例,但從長遠來看,usort可能是更好的解決方案。

$arr = Array ( 
    "order" => Array (0 => 6, 1 => 1,2=>43), 
    "eventid" => Array (0 => 5, 1 => 1,2=>54,3=>0) 
); 

foreach ($arr as $key => &$value) { 
asort($value); 
}