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

У меня есть массив, и я хотел бы выставить значение в определенном порядке. Как я могу это сделать.

Множество

$age = array(48,37,43,56,32);

Выход, который я хочу

37
56
43
32
48

Я поместил array $age в цикл foreach. Я создал другой массив вне цикла foreach. Я делаю array Push, если value = xx. Это не работает.

Каков наилучший способ получения результата в указанном выше порядке?

Я не понимаю логику заказа ... в чем магия?

B001ᛦ 03.07.2018 12:16

Если логика сортировки фиксирована, то ваш другой массив является - это отсортированный массив. Если нет, вам нужно пояснить это.

iainn 03.07.2018 12:18

Лучший способ - это usort, так как с его помощью вы можете создать свой собственный алгоритм. Тем не менее, я бы понятия не имел, какой алгоритм вы использовали для такой сортировки (?).

Loek 03.07.2018 12:19

Логика заключается в том, что каждый из этого возраста является чужим ключом в другой таблице. итак, 37 - это студенты, 56 - взрослые, 43 - отключены и т.д. Я хочу сначала видеть студентов, а не взрослых, а не инвалидов и т. д.

Luke Brough 03.07.2018 12:22

Если вы знаете порядок, зачем вам этот массив? Кроме того, использование возраста в качестве внешнего ключа к «ролям» звучит невероятно странно.

Loek 03.07.2018 12:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
5
72
1

Ответы 1

Я не уверен, я правильно понимаю ваш вопрос, но если вы уже знаете порядок, то какова цель создания этого массива.

Что ж, я думаю, у меня есть два решения для сортировки этого массива в вашем индивидуальном порядке.

Опция 1

Укажите массив $order (если он вам уже известен) и используйте usort для сравнения значений массивов $age и $order. usort найдет элементы $age в массиве $order.

$order = array(37, 56, 43, 32, 48);
$age = array(48, 37, 43, 56, 32);

usort($age, function ($a, $b) use ($order) {
    $firstItem  = array_search($a, $order);
    $secondItem = array_search($b, $order);

    return $firstItem - $secondItem;
});

print_r($age);

I've used closure in usort to make sorting simpler

Выход

Array
(
    [0] => 37
    [1] => 56
    [2] => 43
    [3] => 32
    [4] => 48
)

You can check usort and array_search

Вариант 2

Из вашего комментария я попытался придумать другой подход, который заключается в установке ключей в массивах $age и $order и сравнении обоих массивов, чтобы отсортировать их в произвольном порядке.

$order = array('students', 'adults', 'disable', 'enable', "variable");
$age = array(
    'variable' => 48,
    'students' => 37,
    'disable' => 43,
    'adults' => 56,
    'enable' => 32
);

$ordered_array = array_merge(array_flip($order), $age);
print_r($ordered_array);

Выход

Array
(
    [students] => 37
    [adults] => 56
    [disable] => 43
    [enable] => 32
    [variable] => 48
)

Also check array_merge and array_flip

Другие вопросы по теме