Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按元素大小排序多维数组_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

Php 按元素大小排序多维数组

Php 按元素大小排序多维数组,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我希望能够按照元素数组的大小对数组进行排序 array( [0] => array( [0] => 'B', [1] => 'C'); [1] => array( [0] => 'B'); [2] => array( [0] => 'A', [1] => 'C'); [3] => array( [0] => 'A', [1] => 'B', [2] => 'C');

我希望能够按照元素数组的大小对数组进行排序

array( 
    [0] =>  array( [0] => 'B',  [1] => 'C');
    [1] =>  array( [0] => 'B');
    [2] =>  array( [0] => 'A', [1] =>  'C');
    [3] =>  array( [0] => 'A', [1] =>  'B', [2] =>  'C');
    [4] =>  array( [0] => 'C');       
    [5] =>  array( [0] => 'A');
    [6] =>  array( [0] => 'A', [1] =>  'B');
   )

array( 
    [0] =>  array( [0] => 'A');
    [1] =>  array( [0] => 'B');
    [2] =>  array( [0] => 'C');
    [3] =>  array( [0] => 'A', [1] =>  'B');
    [4] =>  array( [0] => 'A', [1] =>  'C');
    [5] =>  array( [0] => 'B',  [1] => 'C');
    [6] =>  array( [0] => 'A', [1] =>  'B', [2] =>  'C');
)
使用闭包(PHP5.3):

不使用闭包(PHP 5.2):


请注意,
$array
将被就地排序。不要在
usort()

的返回值中查找它,我还没有测试过它,但我希望您能理解这一点

function yoursort($a,$b) {
  if(!(is_array($a) && is_array($b)) return 0; // item of array is not an array
  $cntA = sizeof($a);
  $cntB = sizeof($b);
  if($cntA!=$cntB) return $cntA-$cntB; // smaller array up
  foreach($a as $key=>$val) {
    $ordA = ord($a[$key]);
    $ordB = ord($b[$key]);
    if($ordA!=$ordB) return $ordA-$ordB; // sort sub array by alphabet
  }
  return 0; // items are equal
}
usort($yourarray,"yoursourt");
在这里你可以找到更多关于usort的信息

您可以通过两个步骤完成此操作

  • 在步骤1中,对每个阵列进行排序 价值观
  • 在步骤2中,首先对2D数组进行排序 基于大小,如果大小不一致 对值进行相等排序
代码:

foreach($key=>$val){
排序($input[$key]);
}
usort($input,“cmp”);
打印(输入);
功能cmp($a$b){
如果(计数($a)!=计数($b)){
返回计数($a)-计数($b);
}

对于($i=0;$i),你是在寻找优雅还是“足够好”?
usort($array, create_function('$a, $b', 'return count($a) - count($b)'));
function yoursort($a,$b) {
  if(!(is_array($a) && is_array($b)) return 0; // item of array is not an array
  $cntA = sizeof($a);
  $cntB = sizeof($b);
  if($cntA!=$cntB) return $cntA-$cntB; // smaller array up
  foreach($a as $key=>$val) {
    $ordA = ord($a[$key]);
    $ordB = ord($b[$key]);
    if($ordA!=$ordB) return $ordA-$ordB; // sort sub array by alphabet
  }
  return 0; // items are equal
}
usort($yourarray,"yoursourt");
foreach($input as $key => $val) {
        sort($input[$key]);
}
usort($input, "cmp");
print_r($input);

function cmp($a,$b) {
        if(count($a) != count($b)) {
                return count($a) - count($b);
        }
        for($i=0;$i<count($a);$i++) {
                if($a[$i] != $b[$i]) {
                        return strcmp($a[$i],$b[$i]);
                }
        }
        return 0;
}