2010-05-26 43 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 
     } 
    } 
} 

请记住我没有测试此代码,所以你可能需要做调试少量。这应该按照你想要的方式进行排序,有更快的方法来执行这个搜索,但这是简单表,我试图在注释代码中给你一些解释。

希望这有助于 大风