使用 usort 函数
现在,让我们看看另一种按值对多维数组进行排序的方法:usort 函数。
它应该仅用于 PHP 5.2 或者更早版本。
如果你还在使用这样的版本,你应该首先定义一个排序函数,如下所示:
function sortByOrder($a, $b) {
return $a['order'] - $b['order'];
}
usort($myArray, 'sortByOrder');
然后,从 PHP 5.3 版本开始,我们可以这样操作:
usort($myArray, function($a, $b) {
return $a['order'] - $b['order'];
});
使用飞船(Spaceship)运算符
让我们从 PHP 7 开始。
通常,对于 PHP 7,飞船运算符的使用方式如下:
usort($myArray, function($a, $b) {
return $a['order'] <=> $b['order'];
});
为了将其扩展到多维排序,如果第一个排序元素为零,则需要引用第二个/第三个排序元素。
具体的例子如下所示:
usort($myArray, function($a, $b) {
$retval = $a['order'] <=> $b['order'];
if ($retval == 0) {
$retval = $a['suborder'] <=> $b['suborder'];
if ($retval == 0) {
$retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
}
}
return $retval;
});
如果我们打算保留key关联,我们就可以使用 uasort()。
在这篇文章中,我们将展示如何以最直接有效的方式按值对多维数组进行排序。
spaceship运算符
在 PHP 7 上使用了 spaceship 运算符。
它被认为是一种三向比较运算符。
它可以在两个操作数之间执行大于、小于和相等的比较。
此运算符可用于数组、浮点数、字符串、对象、整数等。
如果任一侧的值相等,则返回 0。
当左边的值较大时,返回1.
最后,如果右侧的值更大,则返回 -1.
日期:2020-06-02 22:15:53 来源:oir作者:oir
