例如,我有一个名为$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
)
答案 0 :(得分:3)
array_multisort
对数组进行排序,它不会返回排序的数组。你需要像这样使用它:
foreach ($slice1 as $col) {
array_multisort($col);
$slicesort[] = $col;
}
话虽如此,array_multisort
在这里有些过分,我不确定你是否真的需要创建数组的副本。这样做会很好:
foreach ($slice1 as &$col) {
sort($col);
}
这会通过引用将sort
应用于$slice1
中的每个数组,从而订购$slice1
。
答案 1 :(得分:1)
PHP array_multisort
,根据documentation,用于排序多维或多维数组,在您不需要的情况下。
在您的情况下,您只需要sort
,就可以找到文档here
$slicesort = array();
foreach ($slice1 as $col) {
sort($col);
$slicesort[] = $col;
}
答案 2 :(得分:0)
array_multisort返回一个布尔值,true表示成功,否则返回false。
以这种方式更改您的代码:
foreach ($slice1 as $col) {
if (array_multisort($col)) {
$slicesort[] = $col;
}
}
答案 3 :(得分:0)
$slice = array(
array(12,4,8,2,10),
array(9,7,1,10,13)
);
foreach ($slice as &$arr) {
sort($arr);
}
print_r($slice);