2012-03-13 55 views
0
array("name" => "", 
     "uid" => "", 
     "nid" => "", 
     "vid" => ""); 

,我需要它排序是這樣的:排序這個數組根據自定義條件

array("nid" => "", 
     "uid" => "", 
     "vid" => "", 
     "name" => ""); 

但我似乎無法弄清楚array_map,uksort()......或任何其他。感謝

+1

什麼_is_的標準是什麼? – 2012-03-13 22:57:12

回答

2

不是那種因爲如此,但如果你只盯着4個按鍵,那麼爲什麼不:

$newArray = array("nid" => $array["nid"], "uid" => $array["uid"], "vid" => $array["vid"], "name" => $array["name"]); 
+0

因爲有時候第一個數組並沒有所有的鍵,我需要把鍵存在(即使這個值爲空),這最終會工作得最好,謝謝。 – 2012-03-13 23:15:08

0

你可以使用uksort()

function myksort($a, $b) { 
    $korder = array('nid', 'uid', 'vid', 'name'); 
    return (array_search($a, $korder) < array_search($b, $korder)) : -1 ? 1; 
} 

uksort($array, 'myksort'); 
1

您是否檢查了function reference for uksort?

既然你要以升序通過其按鍵的字母順序排序的數組,但有「姓名」鍵最後,即使你以後添加附加鍵這應該工作:

<?php 

class MySortHelper 
{ 
    function sort_my_array($a, $b) 
    { 
     if ($a == $b) return 0; 

     if ($a == 'name') return 1; 
     if ($b == 'name') return -1; 

     return ($a > $b) ? 1 : -1; 
    } 
} 

// ... 

$my_sort_helper = new MySortHelper(); 
uksort($my_array, array($my_sort_helper, 'sort_my_array'));