我找到了有关排序多维数组的其他线程,但这不是同一个问题。
$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);
但无论如何这是不正确的。
我该怎么办?
足够简单:
foreach($arr as &$v) {
sort($v);
}
&$v
允许通过引用迭代值,从而允许在foreach循环内进行修改(从而对每个子数组进行排序)。
// if arr is a multidimensional array
foreach($arr as &$v)
sort($v[0]); // sort the subarray
unset($v);
如果您打算稍后在另一个 foreach 中使用 $v 任何 !isset($v[0]) 都可能感染下一个循环,奇怪