我有这个数组结构
Array
(
[xyz] => Array
(
[1] => 3
[0] => s
)
[dds] => Array
(
[a] => 96
[d] => 4
)
...
)
如何在第一个维度上进行排序,以便将dds放在第一位。ksort不起作用(至少对我来说)。
TIA-
编辑这是我的简单代码。我将一个序列化的2D数组文件读取到一个变量中,并对其进行排序,没有什么复杂的,ksort在我的1D数组上工作没有问题。如果我注释掉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提供的解决方案是一个很好的解决方案。
使用ksort。
ksort($array);
我假设您的数组的名称是$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作为内联函数是一个错误。这是经过更新、测试和工作的代码。
有一个PHP函数uksort()
,它根据键对数组进行排序。但你必须建立自己的比较函数
你可以在这里得到这个函数的文档。