У меня есть массив, и я хотел бы выставить значение в определенном порядке. Как я могу это сделать.
Множество
$age = array(48,37,43,56,32);
Выход, который я хочу
37
56
43
32
48
Я поместил array $age в цикл foreach. Я создал другой массив вне цикла foreach. Я делаю array Push, если value = xx. Это не работает.
Каков наилучший способ получения результата в указанном выше порядке?
Если логика сортировки фиксирована, то ваш другой массив является - это отсортированный массив. Если нет, вам нужно пояснить это.
Лучший способ - это usort, так как с его помощью вы можете создать свой собственный алгоритм. Тем не менее, я бы понятия не имел, какой алгоритм вы использовали для такой сортировки (?).
Логика заключается в том, что каждый из этого возраста является чужим ключом в другой таблице. итак, 37 - это студенты, 56 - взрослые, 43 - отключены и т.д. Я хочу сначала видеть студентов, а не взрослых, а не инвалидов и т. д.
Если вы знаете порядок, зачем вам этот массив? Кроме того, использование возраста в качестве внешнего ключа к «ролям» звучит невероятно странно.






Я не уверен, я правильно понимаю ваш вопрос, но если вы уже знаете порядок, то какова цель создания этого массива.
Что ж, я думаю, у меня есть два решения для сортировки этого массива в вашем индивидуальном порядке.
Укажите массив $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
usortto make sorting simpler
Выход
Array
(
[0] => 37
[1] => 56
[2] => 43
[3] => 32
[4] => 48
)
You can check usort and array_search
Из вашего комментария я попытался придумать другой подход, который заключается в установке ключей в массивах $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
Я не понимаю логику заказа ... в чем магия?