php - 在2D数组的第一维上排序数组

时间:2012-03-18 07:17:08

标签: php sorting multidimensional-array

我有这个数组结构

Array
(
    [xyz] => Array
        (
            [1] => 3
            [0] => s
        )

    [dds] => Array
        (
            [a] => 96
            [d] => 4

         )
...
)

如何对第一个维度进行排序,以便dds成为第一个维度。 ksort不起作用(至少对我而言)。

TIA

编辑 这是我的简单代码。我将序列化的2D数组文件读入变量,并对其进行排序,没有什么复杂的,ksort在我的一维数组上工作没有问题。如果我注释掉ksort行,那么它运行没有错误。

$inputfile = "xxx/result.txt";    
$builta = file_get_contents($inputfile);
$built =unserialize($builta);
    $size = sizeof($built);
    echo $size;

    echo "<br><pre>";
    print_r ($built);
    echo "</pre>";

    ksort($built);

    echo "<br><pre>";
    print_r ($built);
    echo "</pre>";

没什么复杂的。

更新:遇到处理大型数组的更多错误后,似乎ksort的问题是由于没有足够的内存来排序大型数组。 tpaksu提供的解决方案是一个很好的解决方法。

3 个答案:

答案 0 :(得分:2)

使用ksort

ksort($array);

答案 1 :(得分:1)

我假设您的数组名称是$ my_array;然后你可以使用这样的东西:

<?php
$my_array = array(z => array(p=>1,gf=>"d"),v=>array(l=>"m",fr=>"3"));
var_dump($my_array);

$sorted_keys = array_keys($my_array);
sort($sorted_keys,SORT_STRING);
$new_array = array();

var_dump($sorted_keys);

foreach($sorted_keys as $key){
    $new_array[$key] = $my_array[$key];
}

var_dump($new_array);

?>

但是,ksort会更好更简单。

编辑:对不起,我的不好。使用sort作为内联函数是一个错误。这是经过更新,测试和运行的代码。

答案 2 :(得分:0)

有一个PHP函数 uksort() ,它根据键对数组进行排序。但是你必须建立自己的比较功能 你可以获得这个函数的文档here.