То, что я пытаюсь сделать, это сортировать многомерный массив по числу, но иметь любые значения, равные 0, в конце массива.Сортировка многомерного массива по номерному значению с нулевым последним
Этот код работает для сортировки с 0 и одной цифрой, но, похоже, он разбивается, когда к нему добавляются разные цифры.
Выход должен быть: 41,42,43,44,45,46,0,0,0
<?php
$array = array(
array(
"position" => 41,
),
array(
"position" => 43,
),
array(
"position" => 42,
),
array(
"position" => 44,
),
array(
"position" => 45,
),
array(
"position" => 0,
),
array(
"position" => 0,
),
array(
"position" => 0,
),
array(
"position" => 46,
),
);
// Sort ascending
usort($array, 'sortByPosition');
// Show result
echo '<pre>';
print_r($array);
function sortByPosition($a, $b) {
return $a['position'] != 0 ? $a['position'] - $b['position'] : $b['position'] - $a['position'];
}
Хорошо это имеет смысл сейчас. Спасибо за ответ. Похоже, есть еще один ответ, который тоже работает. – stwhite
Другой проще. Не беспокойтесь, если вы предпочтете это принять. –
Для людей, пытающихся выяснить то же самое, что и я, я думаю, что ваш ответ дает объяснение, которое, я считаю, более важно. – stwhite