php 在array_count_values之后对数组进行排序

mftmpeh8  于 2023-10-15  发布在  PHP
关注(0)|答案(7)|浏览(134)

我有一系列的产品

$products = array_count_values($products);

现在我有一个数组,其中$key是产品编号,$value是数组中有多少次这样的产品。我想对这个新数组进行排序,将具有最少“重复”的产品放在首位,但无论我使用什么(rsort,krsort,..),我都会丢失产品编号(密钥)。
有什么建议吗?
谢谢.

w9apscun

w9apscun1#

看看arsort()作为rsort()(以及该系列函数)的替代品。
一般来说,php.net上的'Sorting arrays'页面可能对你有用-它是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
)
k5ifujac

k5ifujac2#

你想使用asort()
此函数对数组进行排序,以使数组索引保持与它们关联的数组元素的相关性。这主要用于对实际元素顺序很重要的关联数组进行排序时。
rsort()从一开始就是错误的(任何其他包含r(表示 reverse)的排序函数也是如此),因为它会从 highestlowest 对数组进行排序。
asort()从 * 最低 * 到 * 最高 * 排序:

<?php
$array = array('f'=>1, 'a'=>2, 'c'=>5);  
asort($array);
print_r($array);

Array
(
    [f] => 1
    [a] => 2
    [c] => 5
)

注意:这些函数对数组进行原地排序。它们返回一个已排序的数组。返回值为:

(..)TRUE成功或FALSE失败。

up9lanfz

up9lanfz4#

你应该使用asort() PHP函数。

iezvtpos

iezvtpos5#

asort()是数组排序,不是升序排序。
dsort不存在。您正在寻找的函数是**arsort()**-数组反向排序。
https://www.php.net/manual/en/function.asort.php
https://www.php.net/manual/en/function.arsort.php

cotxawn7

cotxawn76#

使用此方法按[值]排序:

$array = array_count_values($array);
ksort($array, SORT_REGULAR);
deikduxw

deikduxw7#

只是一个想法; asort -按升序排序(从低到高)
也许试试
dsort -降序(从高到低)

相关问题