gpt4 book ai didi

php - 具体值高优先级的用户排序

转载 作者:行者123 更新时间:2023-12-04 10:36:35 26 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数将按词法顺序(不区分大小写)对字符串数组进行排序。但有一个异常(exception):如果字符串等于,让我们说,“宾果游戏!”把这条线放在上面。

我做了一些在给定的测试数据上运行良好的函数。但我不确定我不会在特殊情况下欺骗自己。请检查我。

<?php

$a = [
'alfa',
'beta',
'gama',
'sigma',
'foo',
'bar',
'bingo!',
];

usort($a, function ($a, $b) {
$cmp = strcasecmp($a, $b);
return $cmp == 0
? 0
: (strcasecmp($a, 'bingo!') == 0
? -1000
: (
strcasecmp($b, 'bingo!') == 0
? 1000
: $cmp
)
);
});

var_export($a);

最佳答案

使用 usort 的解决方案:

$onTop = 'bingo!';

$array = [
'alfa',
'beta',
'gama',
'sigma',
'foo',
'bar',
'bingo!',
];

usort($array,function($a,$b) use($onTop){
$r = ($b == $onTop) <=> ($a == $onTop);
return $r==0 ? strnatcasecmp($a,$b) : $r;
});

var_export($array);

结果:
array (
0 => "bingo!",
1 => "alfa",
2 => "bar",
3 => "beta",
4 => "foo",
5 => "gama",
6 => "sigma",
)

关于php - 具体值高优先级的用户排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60153210/

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