У меня есть массив продуктов
$products = array_count_values($products);
теперь у меня есть массив, где $key является номером продуктов, и $value - то, сколько раз у меня есть такой продукт в массиве. Я хочу отсортировать этот новый массив, что продукт с наименьшим количеством "дубликатов" находится на первом месте, но что когда-либо я использую (rsort, krsort..) я освобождаю номера продуктов (ключ).
какие-либо предложения?
спасибо.
Взгляните на arsort ()
как на альтернативу rsort ()
(и этому семейству функций).
Как правило, страница ' Сортировка массивов ' на php.net может быть вам полезна - это сравнение функций сортировки массивов PHP на основе того, что они сортируют, в каком направлении они сортируют и от того, сохранять ключи во время сортировки.
Имейте в виду, для завершения:
Пройдя мимо ', теперь у меня есть массив, где $ key - это номер продукта, а $ value - сколько раз у меня был такой продукт в массиве. Я хочу отсортировать этот новый массив, чтобы продукт с наименьшим количеством «дубликатов» был на первом месте ', вы, вероятно, захотите asort ()
(кулон к sort ()
).
Пример вашего комментария с использованием asort ()
:
$arr = array(
1 => 3,
2 => 2,
5 => 3,
9 => 1
);
asort($arr);
print_r($arr);
дает:
Array
(
[9] => 1
[2] => 2
[1] => 3
[5] => 3
)
Вы хотите использовать asort ()
:
Эта функция сортирует массив таким образом, чтобы индексы массива сохраняли свою корреляцию с элементами массива , с которыми они связаны. Это используется в основном при сортировке ассоциативных массивов, где важен фактический порядок элементов.
rsort ()
в любом случае ошибочен с самого начала (как и любые другие функции сортировки, в которых есть r
(для reverse )), поскольку он отсортирует массив от самого высокого до самого низкого .
asort ()
сортирует от самого низкого до самого высокого :
<?php
$array = array('f'=>1, 'a'=>2, 'c'=>5);
asort($array);
print_r($array);
дает
Array
(
[f] => 1
[a] => 2
[c] => 5
)
Примечание : Эти функции сортируют массивы на месте . Они не возвращают отсортированный массив. Возвращаемые значения:
(..)
ИСТИНА
в случае успеха илиЛОЖЬ
в случае ошибки.
Попробуйте использовать asort ()
или arsort ()
или любую другую функцию сортировки, которая поддерживает ассоциацию индексов .