我有这个数组$mergeArr
:
array (size=5)
'facebook' =>
array (size=3)
'facebook_enabled' => string '1' (length=1)
'facebook_url' => string 'https://www.facebook.com/' (length=25)
'facebook_order' => string '7' (length=1) //order element
'twitter' =>
array (size=3)
'twitter_enabled' => string '1' (length=1)
'twitter_url' => string 'https://www.twitter.com/' (length=24)
'twitter_order' => string '9' (length=1) //order element
'instagram' =>
array (size=3)
'instagram_enabled' => string '1' (length=1)
'instagram_url' => string 'https://www.instagram.com/' (length=26)
'instagram_order' => string '2' (length=1) //order element
'linkedin' =>
array (size=3)
'linkedin_enabled' => string '1' (length=1)
'linkedin_url' => string 'https://www.linkedin.com/' (length=25)
'linkedin_order' => string '5' (length=1) //order element
'pintrest' =>
array (size=3)
'pinterest_enabled' => string '1' (length=1)
'pinterest_url' => string 'https://www.pinterest.com/' (length=26)
'pinterest_order' => string '3' (length=1) //order element
我需要根据每个数组中的*_order
元素对其进行排序。
我尝试了以下代码:
代码PHP:
array_multisort(array_column($mergeArr, '2'), SORT_ASC, $mergeArr);
预期的输出顺序为:Instagram,Pinterest,Linkedin,Facebook,Twiter。
我收到的错误如下
array_multisort():数组大小不一致
能否请您告诉我如何对该数组进行排序,以便得到所需的内容?
谢谢!
答案 0 :(得分:3)
如果要比较的字段始终位于第三个键中,则可以使用usort和array-values来做到这一点:
usort($array, function($a, $b) {
$a = array_values($a);
$b = array_values($b);
return $a[2] > $b[2];
});
实时示例:3v4l