这里的数组是我创建的数组的var_dump
个。我可以发布有关如何请求数组的逻辑,但我希望有足够的信息来提供适当的答案。
我有一个有趣的数组,有一个有趣的排序问题。存在key=>value
方面,其中值为int。然后有order
的键,其值为int。
例如:
array (size=2)
0 =>
array (size=1)
'main-page/_child_page' =>
array (size=2)
'order' => int 0
'fields' =>
array (size=2)
...
1 =>
array (size=1)
'main-page/_secondary_child_page' => int 1
数组的上述var转储包含两件事:order
的键值0
和key=>value
(数组中的元素2),值为{{ 1}}。
现在这个阵列处于完美状态。但如果1
是3,该怎么办?我希望对数组进行排序的方式是:
order
这是我提出的问题 - 可以这样做吗?如果是这样的话:怎么做?
“订单”的概念或在这种情况下:array (size=2)
0 =>
array (size=1)
'main-page/_secondary_child_page' => int 1
1 =>
array (size=1)
'main-page/_child_page' =>
array (size=2)
'order' => int 3
'fields' =>
array (size=2)
...
和order
非常重要。我知道必须制作一个新阵列。但问题是我该如何干净利落地做到这一点?
答案 0 :(得分:0)
我希望这会有所帮助:
usort($array,'compare');
function compare($item1,$item2){
return getValue($item1) - getValue($item2);
}
function getValue($item){
if(is_int($item))return $item;
if(is_array($item))return getValue(reset($item));
trigger_error(E_NOTICE,"undefined item type: ".$item);
}
答案 1 :(得分:0)
不知道数组的目的和可能性使得很难给出一个好的答案,但扩展上面的评论,最好的方法是创建一个原始键的二级数组到一个整数,然后排序基于那个原始数组
注意:我建议不要在原始数组上使用usort或任何其他此类A vs B
样式排序器,因为值检索会多次发生,这对您来说是一个昂贵的过程(请参阅如何{{ 1}}在这里多次传递https://ideone.com/OytXZd)
这是一个完全符合你想要的功能,所以你应该能够自己解决这个问题。
30