Сортировка средствами PHP

Возьмем массив:

$arr = ['Longer' => 'foo', 'Short' => 'bar'];

Отсортируем по длине ключей (от длинных названий к коротким):

uksort($arr, fn($a,$b) => mb_strlen($b)-mb_strlen($a));// сохраняя ассоциацию ключей и значений

Отсортируем по длине значений (от длинных названий к коротким):

usort($arr, fn($a,$b) => mb_strlen($b)-mb_strlen($a));// не сохраняя ассоциацию ключей и значений

Для сохранения ассоциацию ключей и значений, используем arsort (все виды и нюансы описаны тут).

По строковым значениям в объектах:

$a = (new stdClass);
$a->name = 'foo';
$b = (new stdClass);
$b->name = 'bar';
$arr = [$a, $b];
usort($arr, fn(CardDraftDto $a, CardDraftDto $b) => strcmp($a->name, $b->name));

По числовым значениям в объектах:

uasort($result, fn(MyDto $a, MyDto $b) => $a->priority <=> $b->priority);

Carbon объекты сравниваются так:

uasort($products, function (MyObj $left, MyObj $right) {
    if ($left->getUpgradedAt()->greaterThan($right->getUpgradedAt())) {
        return 1;
    }
    if ($left->getUpgradedAt()->equalTo($right->getUpgradedAt())) {
        return 0;
    }
    return -1;
});

Удачки.


11.09.2021 07:08

Комментарии

Комментариев пока нет.


Copyrights © 2007 - 2026 YaPro.Ru