Php 数组\ u multisort():数组大小不一致
我正在尝试使用Php 数组\ u multisort():数组大小不一致,php,arrays,codeigniter,Php,Arrays,Codeigniter,我正在尝试使用array\u multisort()函数根据子数组对数组进行排序 在尝试中 print_r($mar); echo '<br>'; $arr2 = array_multisort($mar, array('wek'=>SORT_ASC)); print_r($arr2); 我需要的是: Array ( [0] => Array ( [dat] => 1 [wek] => 5 [mac] => A100 [mcr] =>
array\u multisort()
函数根据子数组对数组进行排序
在尝试中
print_r($mar); echo '<br>';
$arr2 = array_multisort($mar, array('wek'=>SORT_ASC));
print_r($arr2);
我需要的是:
Array (
[0] => Array ( [dat] => 1 [wek] => 5 [mac] => A100 [mcr] => #00c8ff )
[3] => Array ( [dat] => 5 [wek] => 6 [mac] => A101 [mcr] => #ff8800 )
[1] => Array ( [dat] => 2 [wek] => 9 [mac] => A100 [mcr] => #00c8ff )
[2] => Array ( [dat] => 5 [wek] => 13 [mac] => A100 [mcr] => #00c8ff )
[6] => Array ( [dat] => 8 [wek] => 14 [mac] => A101 [mcr] => #ff8800 )
[4] => Array ( [dat] => 13 [wek] => 17 [mac] => A100 [mcr] => #00c8ff )
[5] => Array ( [dat] => 20 [wek] => 21 [mac] => A100 [mcr] => #00c8ff )
)
为了能够使用array\u multisort,您应该重新组织数组。 请参见此处的示例#3: 或者,您可以使用usort,但它将对键重新编号:
<?php
$mar =Array (.
0 => Array ( 'dat' => 1, 'wek' => 5, 'mac' => 'A100', 'mcr' => '#00c8ff' ) ,
1 => Array ( 'dat' => 2, 'wek' => 9, 'mac' => 'A100', 'mcr' => '#00c8ff' ) ,
2 => Array ( 'dat' => 5, 'wek' => 13, 'mac' => 'A100', 'mcr' => '#00c8ff' ) ,
3 => Array ( 'dat' => 5, 'wek' => 6, 'mac' => 'A101', 'mcr' => '#ff8800' ) ,
4 => Array ( 'dat' => 13, 'wek' => 17, 'mac' => 'A100', 'mcr' => '#00c8ff' ),
5 => Array ( 'dat' => 20, 'wek' => 21, 'mac' => 'A100', 'mcr' => '#00c8ff' ) ,
6 => Array ( 'dat' => 8, 'wek' => 14, 'mac' => 'A101', 'mcr' => '#ff8800' ) ,
);
usort($mar, function($a,$b){return $a['wek']-$b['wek'];});
print_r($mar);
以下行中有一个错误:
$arr2 = array_multisort($mar, array('wek'=>SORT_ASC));
您正试图将返回结果存储到数组中,但array_multisort返回的是布尔值,而不是已排序的数组:
执行此操作可对多维数组排序$mar:
foreach ($mar as $key => $row)
{
$wek[$key] = $row['wek'];
}
// Sort the data with wek ascending order, add $mar as the last parameter, to sort by the common key
array_multisort($wek, SORT_ASC, $mar);
$mar数组现在在上述操作之后进行排序。检查工作方式。第三个示例对您很有帮助:array_multisort()需要一个列数组,但必须对其进行注释。我在使用PHP 5.x时遇到了同样的问题,当更改为PHP7.x时解决了这个问题。
foreach ($mar as $key => $row)
{
$wek[$key] = $row['wek'];
}
// Sort the data with wek ascending order, add $mar as the last parameter, to sort by the common key
array_multisort($wek, SORT_ASC, $mar);