此问题在此处已有答案:
How do I sort a multidimensional array by one of the fields of the inner array in PHP? [duplicate](8个答案)
上个月关门了。
我正在尝试使用array_multisort()
函数在其子数组的基础上对数组进行排序......
一边努力;
print_r($mar); echo '<br>';
$arr2 = array_multisort($mar, array('wek'=>SORT_ASC));
print_r($arr2);
获取错误array_multisort(): Array sizes are inconsistent
排序前的输出为
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 )
)
我需要的是:
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 )
)
3条答案
按热度按时间v7pvogib1#
以下行中存在错误:
您尝试将返回结果存储到数组中,但array_multisort返回的是布尔值而不是排序后的数组:
为排序多维数组**$mar**执行以下操作:
$mar数组现在已在上述操作后排序。
uqzxnwby2#
为了能够使用array_multisort,你应该重新组织你的数组。请看下面的例子#3:http://uk1.php.net/array_multisort
或者,您可以使用usort,但它会对键重新编号:
bmvo0sr53#
避免函数误用,应如下所示:
有时,例外的原因
数组_多重排序():数组大小不一致
数组(行)没有我们排序的关键字。这是很容易的,因为我们有很多元素关联数组,有时由第三方提供。
解决办法是在使用前检查数据:
完整样品: