gpt4 book ai didi

php - PHP 中有简单的 usort 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:01 24 4
gpt4 key购买 nike

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

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

usort($animals, function ($a, $b) {
return strlen($a) - strlen($b);
});

这会起作用,但我们需要说 strlen 两次。这样说会更好:

usort($animals, function ($element) {
return strlen($element);
});

或者甚至像这样:

usort($animals, 'strlen');

我自己写过这种函数(使用 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);
});
}

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

最佳答案

It works perfectly, but isn't it built in PHP already in some other function?

没有。

If not, why PHP doesn't support this very popular and convenient way of sorting?

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

关于php - PHP 中有简单的 usort 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com