对二维数组的子数组值进行排序并保留第一级键

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

我找到了有关排序多维数组的其他线程,但这不是同一个问题。

$arr[22][] = 45;
$arr[22][] = 44;
$arr[22][] = 99;

$arr[23][] = 95;
$arr[23][] = 55;
$arr[23][] = 1;

echo "<pre>";
print_r($arr);
echo "</pre>";

我想对子数组内部的值进行排序,而不是子数组之间的值。

预期结果是

[22] => Array [0 ] => 44 [1] => 45 [2] => 99

[23] => Array [0 ] => 1 [1] => 55 [2] => 95

我尝试用

array_multisort($arr[22], SORT_ASC, SORT_NUMERIC
                , $arr[23], SORT_ASC, SORT_NUMERIC);

但无论如何这是不正确的。

我该怎么办?

php arrays sorting multidimensional-array
2个回答
2
投票

足够简单:

foreach($arr as &$v) {
    sort($v);
}

&$v
允许通过引用迭代值,从而允许在foreach循环内进行修改(从而对每个子数组进行排序)。


0
投票
// if arr is a multidimensional array
foreach($arr as &$v)
    sort($v[0]);  // sort the subarray
unset($v);

如果您打算稍后在另一个 foreach 中使用 $v 任何 !isset($v[0]) 都可能感染下一个循环,奇怪

© www.soinside.com 2019 - 2024. All rights reserved.