<?php
$arr = [
['id'=>1,'main'=>222],
['id'=>2,'main'=>333],
['id'=>2,'main'=>444],
['id'=>1,'main'=>111],
['id'=>3,'main'=>122],
];
$a = array_column($arr,'main');
$b = array_column($arr,'id');
echo "<pre>";
var_dump($a,$b);
var_dump(array_multisort($a,SORT_DESC,$b));
var_dump($a,$b);
?>
array_multisort() 先把第一个数组按照键值的大小排序,然后其它数组都按照第一个数组的调整策略进行调整。
优化一下则为
<?php
$arr = [
['id'=>1,'main'=>222],
['id'=>2,'main'=>333],
['id'=>2,'main'=>444],
['id'=>1,'main'=>111],
['id'=>3,'main'=>122],
];
echo "<pre>";
array_multisort(array_column($arr,'main'),SORT_DESC,$arr);
var_dump($arr);
?>