我有一个非常大的阵列。数组中的数组。以下是其中的一小部分;
[lta/] => Array
(
[2012-12-31/] => Array
(
[0] => 31_december_2012.pdf
[1] => 31_december_2012.xls
[2] => key_points.html
)
)
我需要做的是获取“key_points.html”值始终从它的数组顶部开始。实施例;
[2012-12-31/] => Array
(
[2] => key_points.html
[0] => 31_december_2012.pdf
[1] => 31_december_2012.xls
)
)
我不能做一个简单的asort因为我从来不知道“key_points.html”将出现在数组中。
我尝试重命名值“key_points.html”,以便对其进行排序,然后在之后取消重命名;
foreach($the_array as $array_object => $array_item)
{
if($array_item == "key_points.html") {$array_item = "0001_key_points.html";}
}
但字面意思似乎没有效果!它甚至没有重命名我的价值。我也用字符串替换尝试了同样的事情;
$the_array = str_replace("key_points.html", "0001_key_points.html", $the_array);
是否有一个函数可能允许你指定一个字符串,并在每次找到它时将其移动到每个数组的顶部?
答案 0 :(得分:1)
使用uasort
指定自定义比较器回调:
uasort($array, function($a, $b) {
if($a == 'key_points.html') return -1; // Smaller than all
if($b == 'key_points.html') return 1; // Larger than all
return ($a < $b) ? -1 : 1; // Default sorting
});
语法假定最新的PHP(5.3+)并支持anonymous functions。
答案 1 :(得分:0)
使用自定义功能
function customSort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $val) {
$sorter[$ii]=$va[$key];
}
asort($sorter);
foreach ($sorter as $ii => $val) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
customSort($your_array,"2");