【问题标题】:Sort array based on the number of elements in the secondary array set as the value in PHP根据二级数组中元素的数量对数组进行排序,该数组设置为PHP中的值
【发布时间】:2026-02-17 01:25:02
【问题描述】:

我给了一个填充的数组,看起来像这样 -

$array = array(
   0 => array(2,3,4),
   1 => array(2,3,7,6,8),
   -- and so on  
 );

在 PHP/PHP5.x 中是否有一种简写方式来完成基于主数组每个键的值中元素数量的此类数组的排序? 谢谢。

【问题讨论】:

    标签: php arrays php-5.3


    【解决方案1】:

    使用usort()

    function cmp($a, $b) {
        if (count($a) == count($b)) {
            return 0;
        }
        return (count($a) < count($b)) ? -1 : 1;
    }
    
    usort($array, "cmp");
    

    这是该函数的一个更好的优化版本(只调用了两次count()):

    function cmp($a, $b) {
        $numA = count($a);
        $numB = count($b)
        if ($numA == $numB) {
            return 0;
        }
        return ($numA < $numB) ? -1 : 1;
    }
    

    【讨论】:

    • 太棒了,太棒了,谢谢。不知道这个功能,学到了新东西:-)
    • @kuroineko -同意,“比较函数必须返回一个大于 0 的整数 ”。