Возьмем массив:
$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;
});Удачки.
Комментарии
Комментариев пока нет.