Как отсортировать массив в индивидуальном порядке - PullRequest
0 голосов
/ 03 июля 2018

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

Массив

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

Вывод я хочу

37
56
43
32
48

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

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

1 Ответ

0 голосов
/ 03 июля 2018

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

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

Вариант 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);

Я использовал Закрытие в usort для упрощения сортировки

выход

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

Вы можете проверить usort и 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
)

Также проверьте array_merge и array_flip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...