Мне нужно отсортировать массив в зависимости от того, сколько товара было продано. Затем мне нужно отсортировать его так, чтобы приоритет (что-то выше нуля) был перемещен в начало. Проблема у меня в том, что, когда я второй сорт (шаг 3) Unsort сорта с шага 2.PHP-сортировка по значению массива (приоритет), но сохраняйте исходную сортировку
Шаг 1: У меня есть массив:
array(
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
)
Шаг 2: сортировать его на основе sold_count и получить:
array(
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
)
Шаг 3: сортировка его по приоритету (то, что я должен получить).
array(
array(
'title' => 'B',
'priority' => 2,
'sold_count' => 0
),
array(
'title' => 'C',
'priority' => 1,
'sold_count' => 3
),
array(
'title' => 'A',
'priority' => 0,
'sold_count' => 44
),
array(
'title' => 'D',
'priority' => 0,
'sold_count' => 33
),
)
Вместо того, чтобы получить то, что я хочу (шаг 3) Я получаю массив с приоритетом отсортированный прямо однако все другие руководства после того, как у случайном порядке. Все руководства, которые не имеют приоритета (приоритет === 0), не должны использоваться.
Я пробовал кучу методов, используя asort, aasort, custom foreach и установив ключ и этот мультисорт (пример ниже, но взятый из here и here, the example 3).
$sorterA =
$sorterB = array();
foreach($array as $k => $v) {
$sorterA[$k] = $k;
$sorterB[$k] = $v['priority'];
}
array_multisort($sorterA, SORT_NUMERIC, $sorterB, SORT_DESC, SORT_NUMERIC, $array);
Примечание: Оба сорта должны быть сделаны отдельно (поскольку первый сорт не всегда отсортирован по sold_count, а по дате или других вещей).
Пробовали ли вы [мой ответ] (HTTP://stackoverflow.com/a/16788610/50079) с первого вопроса, с которым вы связались? Сортируйте сначала по приоритету, а затем по 'sold_count' по убыванию. – Jon
Пока нет. Позвольте мне проверить это – iDev247
[Посмотрите] (http://ideone.com/BOLilb). – Jon