[英]Sort multidimensional array in PHP using foreach
例如,我有一个名为$slice
的数组,如下所示:
Array
(
[0] => Array
(
[0] => 12
[1] => 4
[2] => 2
[3] => 8
[4] => 20
)
[1] => Array
(
[0] => 9
[1] => 7
[2] => 1
[3] => 10
[4] => 23
)
)
我想在上面对数组进行排序,以便输出如下所示:
Array
(
[0] => Array
(
[0] => 2
[1] => 4
[2] => 8
[3] => 12
[4] => 20
)
[1] => Array
(
[0] => 1
[1] => 7
[2] => 9
[3] => 10
[4] => 23
)
)
然后我尝试使用foreach和array_multisort,当我使用print_r时,每个col的结果为1:
foreach ($slice1 as $col) {
$slicesort[] = array_multisort($col);
}
output :
Array
(
[0] => 1
[1] => 1
)
array_multisort
排序到位的阵列,它不返回数组排序。 您需要像这样使用它:
foreach ($slice1 as $col) {
array_multisort($col);
$slicesort[] = $col;
}
话虽这么说, array_multisort
在这里有点过头了,我不确定您是否真的需要创建该数组的副本。 这样就可以了:
foreach ($slice1 as &$col) {
sort($col);
}
这将通过引用对$slice1
的每个数组进行sort
,从而在适当位置订购$slice1
。
array_multisort返回一个布尔值,成功则返回true,否则返回false。
通过以下方式更改代码:
foreach ($slice1 as $col) {
if (array_multisort($col)) {
$slicesort[] = $col;
}
}
$slice = array(
array(12,4,8,2,10),
array(9,7,1,10,13)
);
foreach ($slice as &$arr) {
sort($arr);
}
print_r($slice);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.