2013-09-17 3 views
0

Я пытаюсь отсортировать многомерный массив по несколько значений, но я получаю сообщение об ошибке:«размеры массива несовместимы» ошибка при использовании array_multisort

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

Line 19, где я называю array_multisort функция:

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

Я не смог повторить этот вопрос в тесте, так что у меня не было много удачи в решении этого вопроса.

Так что в основном я сохраняю таблицу MySql как многомерный ассоциативный массив. Затем я пытаюсь сортировать строки тремя разными столбцами. Я проверил, и все массивы, переданные в функцию array_multisort(), имеют одинаковый размер. Я проверил оба, вручную просматривая каждую строку и используя sizeof().

Любые идеи, что может быть причиной этого и/или что такое решение?

ответ

1

Я закончил использовать uasort(). это не давало мне никаких проблем, и было довольно просто настроить логику cmp.

По-прежнему не знаю, в чем проблема с array_multisort() была.

3

, чтобы ответить на ваш первоначальный вопрос, это обычно происходит с непосвященной переменной. Например:

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

вызовет ПРЕДУПРЕЖДЕНИЕ из-за непосвященных переменной $ arr_vol но инициализировать переменную перед цикл:

$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); 

... & предупреждение исчезает, надеюсь, что это помогает.

Смежные вопросы