按键对二维数组的每一行中的元素进行排序[重复]

问题描述 投票:0回答:1

我预料到了这个:

$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

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

实现这一目标的最优雅的简短方法是什么?

(以类似排序多维数组的方式调查usort:如果列包含子字符串则优先排序,然后按第二列排序但我找不到定位第二个键的方法)

php arrays sorting multidimensional-array ksort
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.