按子数组中的元素数排序数组数组

时间:2014-03-14 16:58:03

标签: php arrays sorting

我有一个数组数组。我想对包含数组进行排序,以便数组中元素最多的子数组是第一个。

实施例:

$my_array = array(
  array(0=>”a", 1=>”b”, 4=>”c"),
  array(3=>”z"),
  array(0=>”p”, 2=>”k"),
);

期望的结果: 具有3个元素的子数组按1排序,具有1个元素的子数组按顺序排列。

$my_array = array(
  array(0=>”a", 1=>”b”, 4=>”c"),
  array(0=>”p”, 2=>”k"),
  array(3=>”z"),
);

2 个答案:

答案 0 :(得分:4)

只需使用usort()方法使用count()

<?php

$my_array = array(
  array(0=>"a", 1=>"b", 4=>"c"),
  array(3=>"z"),
  array(0=>"p", 2=>"k"),
);

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

print_r($my_array);

Example fiddle

答案 1 :(得分:2)

这种变体可能会成功。 usort

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

usort($my_array, 'compare');