我有这个数组结构
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提供的解决方案是一个很好的解决方法。
答案 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.