php array_multisort():数组大小不一致
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22247844/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
array_multisort(): Array sizes are inconsistent
提问by rb vishnu
I am trying to sort an array on the base of its child array using array_multisort()function......
我正在尝试使用array_multisort()函数对其子数组的基础上的数组进行排序......
While trying;
在尝试的同时;
print_r($mar); echo '<br>';
$arr2 = array_multisort($mar, array('wek'=>SORT_ASC));
print_r($arr2);
getting error array_multisort(): Array sizes are inconsistent
出错 array_multisort(): Array sizes are inconsistent
the output before sorting is
排序前的输出是
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 )
)
What i need is:
我需要的是:
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 )
)
回答by Keerthi Menon
there is an error in below line:
下面一行有错误:
$arr2 = array_multisort($mar, array('wek'=>SORT_ASC));
you are trying to store the return result to an array, but array_multisort returns boolean values not the sorted array:
您试图将返回结果存储到数组中,但 array_multisort 返回布尔值而不是排序数组:
do this for sorting your multidimensional array $mar:
这样做是为了对多维数组$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);
The $mararray is now sorted after the above operations..
在三月$阵列现上述操作后进行排序..
回答by Lajos Veres
To be able to use array_multisort you should reorganize your array. See the example #3 here: http://uk1.php.net/array_multisort
为了能够使用 array_multisort,您应该重新组织您的数组。请参阅此处的示例 #3:http: //uk1.php.net/array_multisort
Or you can use usort, but it will renumber the keys:
或者您可以使用 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);

