Как отсортировать массив в порядке, определенном пользователем?

Прошу совета

как отсортировать массив в порядке, который определяю я? Например по абсолютно не связанным идшникам, чтобы первым шли элементы с ид 321, вторым 8734, третьим 210, четвертым 2131 и так далее, таких кейсов 12 всего :)

как, например, это работает в mysql - ORDER BY FIELD() https://oooportal.ru/?cat=article&id=1227
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
GennadyS
@GennadyS
Программист, философ
$source = [...];
$pattern = [321, 8734, 210, 2131];
usort($source, function ($a, $b) use ($pattern) {
  $x = array_search($a['id'], $pattern); // Вам нужно искать свое значение, разумеется
  $y = array_search($b['id'], $pattern);
  if ($x == $y) return 0;
  return ($x < $y) ? -1 : 1; // если индекс первого элемента больше, он "меньше"
});

— суть в том, чтобы определять вес элементов при сортировке по их позиции в массиве-паттерне.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы