不推荐使用的功能:usort():不推荐从比较函数返回布尔值,返回小于、等于或大于零的整数

问题描述 投票:0回答:1

我的一些代码在下面遇到了一个小问题。

// sorting
$sortField = $this->sortField;
$sortDir = $this->sortDir;
usort($data, function ($a, $b) use ($sortField, $sortDir) {
    if ($sortDir == "asc") {
        return $a[$sortField] > $b[$sortField];
    } else {
        return $a[$sortField] < $b[$sortField];
    }
});

对我需要更改的内容有点困惑。

我在另一个线程中读到这个。

PHP 8 引入了稳定排序 RFC,这(听起来)意味着 PHP 中的所有排序函数现在都是“稳定的”。

飞船运算符用于比较两个表达式。当 $a 分别小于、等于或大于 $b 时,它返回 -1、0 或 1。比较是根据 PHP 通常的类型比较规则进行的。

这是否意味着我需要在返回中添加宇宙飞船操作员:

        return $a[$sortField] <=> $b[$sortField];
    } else {
        return $a[$sortField] <=> $b[$sortField];
    }

就是这样吗

return php-8 usort spaceship-operator
1个回答
0
投票

就个人而言,我没有使用过该运算符,但是是的,因为您需要返回 1、0 或 -1。但是你会想要颠倒左右,以便它根据排序顺序正确运行。像这样:

if ($sortDir == "asc") {
    return $a[$sortField] <=> $b[$sortField];
} else {
    return $b[$sortField] <=> $a[$sortField];
}

我刚在一个旧网站上收到这个错误,错误说明该功能已“弃用”哈!它导致 api 调用完全失败,所以我认为我们已经“弃用”了,你不觉得吗? :-)

此外,我可能会倒退您的逻辑,但我认为您应该明白这一点。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.