问题:我有一个关联的多维数组,每个键内部都有一个数组。看起来像这样:
array(3){
[1]=>
"id"=>1
"name"=>"Test #1"
"listorder"=>1
[6]=>
"id"=>6
"name"=>"Test #1"
"listorder"=>3
[2]=>
"id"=>2
"name"=>"Test #2"
"listorder"=>2
}
我需要按每个数组的listorder
值对该数组进行排序,而无需更改任何键号。如何才能做到这一点?
我目前正在尝试从一个单独的堆栈溢出问题获得的代码。
function sort_array(){
foreach($array as $key => $row){
$listorder[$row["id"]] = $row["listorder"];
}
array_multisort($listorder, SORT_ASC, $array);
return $array;
}
但是,此特定代码重写了所有键号。是否有另一种排序方式而不更改任何内容?
最好的方法是使用uasort()函数。
试试这个:
$array = array(
1 => array(
"id"=>1,
"name"=>"Test #1",
"listorder"=>1
),
6 => array(
"id"=>6,
"name"=>"Test #1",
"listorder"=>3
),
2 => array(
"id"=>2,
"name"=>"Test #2",
"listorder"=>2
)
);
function sort_count($a, $b) {
if ($a['listorder'] === $b['listorder']) {
return 0;
} else {
return ($a['listorder'] > $b['listorder'] ? 1:-1);
}
}
$sorted_array = uasort($array, 'sort_count');
echo "<pre>";
print_r($array);
echo "</pre>";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句