0

我正在尝试按多个值对多维数组进行排序,但我不断收到错误消息:

Warning: array_multisort() [function.array-multisort]: Array sizes are inconsistent in--on line 19

第 19 行是我调用 array_multisort 函数的地方:

array_multisort($column1, $column2, $column3, $row);

我一直无法在测试中复制这个问题,所以我在解决这个问题时运气不佳。

所以基本上我将一个 MySql 表保存为一个多维关联数组。然后我试图按三个不同的列对行进行排序。我已经检查过,传递给array_multisort()函数的所有数组的大小都相同。我通过手动查看每一行并使用sizeof().

有什么想法可能导致这种情况和/或解决方案是什么?

4

2 回答 2

7

要回答您最初的问题,这通常发生在未启动的变量上。例如:

foreach ($arr_this_referers as $int_key => $arr_row) {
    $arr_vol[$int_key]  = $arr_row['int_cnt'];
}

由于未启动的变量 $arr_vol 将导致警告,但在 for 循环之前初始化变量:

$arr_vol = array();
foreach ($arr_this_referers as $int_key => $arr_row) {
    $arr_vol[$int_key]  = $arr_row['int_cnt'];
}
array_multisort($arr_vol, SORT_DESC, $arr_this_referers);

... & 警告消失了,希望这会有所帮助。

于 2014-03-21T21:48:36.533 回答
2

我结束了只是使用uasort()。它根本没有给我带来任何问题,而且设置 cmp 逻辑非常简单。

仍然不知道问题array_multisort()是什么。

于 2013-09-17T18:33:21.263 回答