2010-05-26 42 views
3

比方說,我在這裏開始:排序數組元素一套多維數組的

$arr[0] = array('a' => 'a', 'int' => 10); 
$arr[1] = array('a' => 'foo', 'int' => 5); 
$arr[2] = array('a' => 'bar', 'int' => 12); 

而且我想在這裏:

$arr[0] = array('a' => 'foo', 'int' => 5); 
$arr[1] = array('a' => 'a', 'int' => 10); 
$arr[2] = array('a' => 'bar', 'int' => 12); 

我怎樣才能在數組中的元素進行排序由那些元素的元素?

多維數組總覺得有點超過我的大腦可以處理(-_-)(直到我的數字出來,他們似乎超級容易)

+0

很多重複的。請看看這些:http://stackoverflow.com/search?q=php+sort+multidimensional+array – 2010-05-26 18:46:10

回答

4

你想要的值對它們進行排序「int」鍵?

使用uasort有一個回調函數:

function compare_by_int_key($a, $b) { 
    if ($a['int'] == $b['int']) { 
     return 0; 
    } 
    return ($a['int'] < $b['int']) ? -1 : 1; 
} 
uasort($arr, "compare_by_int_key"); 
+2

Alt:'function compare_by_int_key($ a,$ b){return $ a ['int'] - $ b [ 'INT']; }' – jensgram 2010-12-29 13:21:28

0

首先,不要忘記改變你正在使用,以引用數組的Cuz現在該指數的變量,你只需要基本數組,因爲在兩個元素您將值分配給$ arr [1]兩次。

這裏是一個代碼:

// for the number of elements in the base array 
for ($eye = 0; $eye < sizeOf($arr); $eye += 1) { 
    // grab each element in the array 
    for ($jay = 0; $jay < sizeOf($arr); $jay += 1) { 
     // if the second element of the base array's current element 
     // is greater than the next one 
     if ($arr[$jay][1] > $arr[$jay + 1][1]) { 
      // then swap those values 
      $temp = $arr[$jay] 
      $arr[$jay] = $arr[$jay+1] 
      $arr[$jay+1] = $temp 
     } 
    } 
} 

請記住我沒有測試此代碼,所以你可能需要做調試少量。這應該按照你想要的方式進行排序,有更快的方法來執行這個搜索,但這是簡單表,我試圖在註釋代碼中給你一些解釋。

希望這有助於 大風