array_multisort несовместимо возвращает false
У меня есть странный сценарий, когда функция array_multisort успешно возвращается только в том случае, если массив, с которым она работает, больше предыдущего массива, с которым она действовала успешно.
Я беру большой набор данных, извлекаю подмножества данных, затем сортирую подмножества и выводю их. array_multisort работает с первым подмножеством, которое имеет 10 записей. Затем происходит сбой в следующих трех подмножествах, которые имеют менее 10 записей, но преуспевает в четвертом подмножестве, которое имеет 16 записей. Затем он преуспевает в подмножестве с 18 записями, но терпит неудачу в следующих 6 подмножествах, которые все имеют менее 18 записей. Это продолжается так, только успешно, когда количество записей больше, чем последний успешный сортировки.
Я добавил неустановленные команды для обоих массивов после того, как вывел результаты, думая, что это может помочь.
for($k=0; $k<$num_category_skaters; $k++)
{
$skater_sort[$k][FirstName] = $category_skaters[$k][FirstName];
$skater_sort[$k][LastName] = $category_skaters[$k][LastName];
$skater_sort[$k][Gender] = $category_skaters[$k][Gender];
$skater_sort[$k][PartnerFirstName] = $category_skaters[$k][PartnerFirstName];
$skater_sort[$k][PartnerLastName] = $category_skaters[$k][PartnerLastName];
}
//print_r($skater_sort);
// Obtain a list of columns
foreach ($skater_sort as $key => $row)
{
$FirstName[$key] = $row['FirstName'];
$LastName[$key] = $row['LastName'];
$PartnerFirstName[$key] = $row['PartnerFirstName'];
$PartnerLastName[$key] = $row['PartnerLastName'];
$BirthDate[$key] = $row['BirthDate'];
$Gender[$key] = $row['Gender'];
// now sort the columns
}
$error=array_multisort($LastName, SORT_ASC, $FirstName, SORT_ASC, $PartnerFirstName, SORT_ASC, $PartnerLastName, SORT_ASC, $Gender, SORT_ASC, $skater_sort);
Любое руководство будет оценено. Спасибо
1 ответ
Ну, я решил проблему, но я действительно не знаю причину поведения. Код, который последовал за командой array_multisort, прошел через массив с циклом for и отобразил данные массива на экране. Когда я взял этот код, переместил его в функцию и вызвал функцию, array_multisort работал нормально. Это не имеет смысла для меня, так как код дисплея следовал за мультисортировкой, но, по крайней мере, проблема решена.