PHP中有简单的用户吗?

Rob*_*bok 5 php arrays sorting usort

在PHP中,usort函数有两个参数:array to sort和callback.回调也有两个参数:$ a和$ b.然后,我们以任何我们想要的方式比较这两者.它总是让我吃惊,因为这个用例usort是不是太普通了.我们通常使用相同的属性对值进行排序,或者对$ a和$ b使用相同的逻辑.例如,如果我们想按长度排序:

$animals = ['dog', 'tiger', 'giraffe', 'bear'];

usort($animals, function ($a, $b) {
    return strlen($a) - strlen($b);
});
Run Code Online (Sandbox Code Playgroud)

这会奏效,但我们需要说strlen两遍.这样说会更好:

usort($animals, function ($element) {
    return strlen($element);
});
Run Code Online (Sandbox Code Playgroud)

或者甚至像这样:

usort($animals, 'strlen');
Run Code Online (Sandbox Code Playgroud)

我自己编写了这种函数(使用PHP 7的好东西,但它可以很容易地改为PHP 5):

function simple_usort(array &$array, callable $callback): bool
{
    return usort($array, function ($a, $b) use ($callback) {
        return $callback($a) <=> $callback($b);
    });
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是它不是已经在其他功能中用PHP构建了吗?如果没有,为什么PHP不支持这种非常流行和方便的排序方式?

Ja͢*_*͢ck 2

它工作得很好,但是它不是已经在其他函数中用 PHP 内置了吗?

不。

如果不是,为什么 PHP 不支持这种非常流行且方便的排序方式?

一种语言应该被设计为提供通用工具来完成任务,而不需要提供大量函数来满足某些可能流行或不流行的用例,前提是性能不会受到这种决定的负面影响。