我尝试通过以下两种方式对数组的元素进行排序:
- 按 key 长度排序(最小的应该排在前面)- See here
- 应该先考虑最大值
要按 key 长度排序,我使用以下命令:
function sortByLength($a,$b){
if($a == $b) return 0;
return (strlen($a) < strlen($b) ? -1 : 1);
}
uasort($deals_tag,'sortByLength');
数组是这样排序的:
Array
(
[/merchantProductFeed] => 1
[/merchantProductFeed/merchant] => 1
[/merchantProductFeed/merchant/prod/text] => 158
[/merchantProductFeed/merchant/prod] => 158
)
我希望它像这样排序:
Array
(
[/merchantProductFeed/merchant/prod] => 158
[/merchantProductFeed/merchant/prod/text] => 158
[/merchantProductFeed] => 1
[/merchantProductFeed/merchant] => 1
)
请注意,数组首先按键长度排序,然后按最大值排序。
我不知道该怎么做。
任何帮助将不胜感激!谢谢!
最佳答案
更新:您可以使用array_mulitsort 。尝试一下
$k= array();
$v = array();
foreach($deals_tag as $key => $value){
$k[] = $key;
$v[] = $value;
}
array_multisort($v, SORT_DESC, $k, SORT_ASC, $deals_tag);
关于php 以两种方式对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706873/