Я пытаюсь реализовать функцию, которая будет сортировать массив строк в лексическом порядке (без учета регистра). Но с одним исключением: если строка равна, скажем, «bin go!» поставьте эту строку сверху.
Я сделал некоторую функцию, которая хорошо работает с данными тестовых данных. Но я не уверен, что я не обманываю себя особым случаем. Пожалуйста, проверьте меня.
<?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);