使用 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