сортировка массива после array_count_values

У меня есть массив продуктов

$products = array_count_values($products);

теперь у меня есть массив, где $key является номером продуктов, и $value - то, сколько раз у меня есть такой продукт в массиве. Я хочу отсортировать этот новый массив, что продукт с наименьшим количеством "дубликатов" находится на первом месте, но что когда-либо я использую (rsort, krsort..) я освобождаю номера продуктов (ключ).

какие-либо предложения?

спасибо.

9
задан Muhammad Umer 18 May 2010 в 11:19
поделиться

4 ответа

Взгляните на 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
)
8
ответ дан 4 December 2019 в 15:12
поделиться

Вы хотите использовать 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
)

Примечание : Эти функции сортируют массивы на месте . Они не возвращают отсортированный массив. Возвращаемые значения:

(..) ИСТИНА в случае успеха или ЛОЖЬ в случае ошибки.

3
ответ дан 4 December 2019 в 15:12
поделиться
3
ответ дан 4 December 2019 в 15:12
поделиться

Вы должны использовать функцию PHP asort () .

0
ответ дан 4 December 2019 в 15:12
поделиться