【问题标题】:ksort a multidimensional array with two numeric keysksort 具有两个数字键的多维数组
【发布时间】:2014-05-22 14:51:56
【问题描述】:

我预料到了:

$f[14][5] = array('');
$f[13][1] = array('');
$f[13][3] = array('');
$f[13][2] = array('');
$f[14][1] = array('');
$f[13][2] = array('');
$f[14][2] = array('');
$f[14][4] = array('');
$f[14][3] = array(''); 
$f[13][4] = array('');
$f[13][5] = array('');


krsort($f);
echo '<pre>';
print_r($f); 

排序

14 5, 
14 4, 
14 3, 
14 2,
14 1, 
13 5, 
13 4, 
13 3, 
13 2,
13 1

但事实并非如此。 不知何故,第二个键没有排序。

实现这一目标的最优雅的捷径是什么?

(以Sorting multidimensional array in PHP 之类的方式调查了 usort,但我找不到针对第二个键的方法)

谢谢

【问题讨论】:

    标签: arrays sorting multidimensional-array ksort


    【解决方案1】:

    试试krsort,它按相反的顺序按键排序。您还必须循环遍历子数组以对其进行排序,因为此函数不适用于多维数组。

    krsort($f);
    foreach ($f as &$v) {
        krsort($v);
    }
    

    输出:

    array (size=2)
      14 => 
        array (size=5)
          5 => 
            array (size=1)
              0 => string '' (length=0)
          4 => 
            array (size=1)
              0 => string '' (length=0)
          3 => 
            array (size=1)
              0 => string '' (length=0)
          2 => 
            array (size=1)
              0 => string '' (length=0)
          1 => 
            array (size=1)
              0 => string '' (length=0)
      13 => &
        array (size=5)
          5 => 
            array (size=1)
              0 => string '' (length=0)
          4 => 
            array (size=1)
              0 => string '' (length=0)
          3 => 
            array (size=1)
              0 => string '' (length=0)
          2 => 
            array (size=1)
              0 => string '' (length=0)
          1 => 
            array (size=1)
              0 => string '' (length=0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多