Сортировка массива по двум полям: названию и индексу
Пример кода сортировки ассоциативного массива, с помощью метода uasort и strnatcmp
$array = [ ['SORT' => '500', 'NAME' => 'Дыня'], ['SORT' => '500', 'NAME' => 'Апельсин'], ['SORT' => '100', 'NAME' => 'Банан'], ['SORT' => '100', 'NAME' => 'Арбуз'], ['SORT' => '500', 'NAME' => 'Виноград'], ]; uasort($array, function ($a, $b) { if ($a['SORT'] == $b['SORT']) { return strnatcmp($a["NAME"], $b["NAME"]); } return ($a['SORT'] < $b['SORT']) ? -1 : 1; }); var_dump($array);
Получим:
array(5) { [3]=> array(2) { ["NAME"]=> string(10) "Арбуз" ["SORT"]=> string(3) "100" } [2]=> array(2) { ["NAME"]=> string(10) "Банан" ["SORT"]=> string(3) "100" } [1]=> array(2) { ["NAME"]=> string(16) "Апельсин" ["SORT"]=> string(3) "500" } [4]=> array(2) { ["NAME"]=> string(16) "Виноград" ["SORT"]=> string(3) "500" } [0]=> array(2) { ["NAME"]=> string(8) "Дыня" ["SORT"]=> string(3) "500" } }
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.