Сортировка массива по двум полям: названию и индексу

48
Алексей,
Сортировка массива по двум полям: названию и индексу

Пример кода сортировки ассоциативного массива, с помощью метода uasort и strnatcmp

Пример кода сортировки ассоциативного массива, с помощью метода 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"
  }
}

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 4 декабря 2024
php, примеры кода
Поделиться
Похожие статьи
Код для отладки
Обычный дамп со сбросом буфера, ничего такого :)
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Пример кода сортировки ассоциативного массива, с помощью метода uasort и strnatcmp