对多维数组进行排序

时间:2010-03-30 07:17:28

标签: php arrays multidimensional-array key indexing

我需要对一个看起来像这样的数组进行排序:

$array[4][0] = array('id' => 1, 'value' => 2);
$array[3][2] = array('id' => 0, 'value' => 3);
$array[4][1] = array('id' => 1, 'value' => 0);
$array[1][3] = array('id' => 2, 'value' => 1);
$array[1][1] = array('id' => 3, 'value' => 0);
$array[3][0] = array('id' => 2, 'value' => 1);
$array[3][1] = array('id' => 1, 'value' => 0);
$array[1][2] = array('id' => 3, 'value' => 2);
$array[1][0] = array('id' => 2, 'value' => 1);
$array[2][1] = array('id' => 0, 'value' => 2);
$array[2][4] = array('id' => 3, 'value' => 1);

但是需要按照以下方式进行排序和返回:

$array[1][0] = array('id' => 2, 'value' => 1);
$array[1][1] = array('id' => 3, 'value' => 0);
$array[1][2] = array('id' => 3, 'value' => 2);
$array[1][3] = array('id' => 2, 'value' => 1);
$array[2][1] = array('id' => 0, 'value' => 2);
$array[2][4] = array('id' => 3, 'value' => 1);
$array[3][0] = array('id' => 2, 'value' => 1);
$array[3][1] = array('id' => 1, 'value' => 0);
$array[3][2] = array('id' => 0, 'value' => 3);
$array[4][0] = array('id' => 1, 'value' => 2);
$array[4][1] = array('id' => 1, 'value' => 0);

任何人都可以帮助我吗?它需要从最低到最高索引值对数组的两个索引进行排序。听起来很简单,但我正在努力解决这个问题,同时仍保持价值不变。

请帮助别人......

3 个答案:

答案 0 :(得分:7)

一个快速的解决方案可能看起来像:

// Sort the outer array
ksort($array); 
// Sort each inner array
foreach($array as &$innerArray)
{
    ksort($innerArray);
}

答案 1 :(得分:3)

您希望按键排序,而不是按值排序:http://se.php.net/manual/en/function.ksort.phphttp://se.php.net/manual/en/function.uksort.php

编辑, 实施例;

function sorter(array &$multidimensional) {
    foreach ($multidimensional as &$current) {
        if (is_array($current))
            sorter($current);
    }
    ksort($multidimensional);
}

答案 2 :(得分:1)

这样的事情应该这样做:

function ksort_recursive(&$arr) {
    foreach($arr as $key => &$value) {
        if(is_array($value)) {
            ksort_recursive($value);
        }
    } unset($value);
    ksort($arr);
}

ksort_recursive($array);