Создана турнирная таблица, Сортировка команд идет по набранным очкам, при набраных очках 0-9 сортировка идет в нормальном режиме: 1 место - 9 очков, 8, 7 и т.д. НО если у команды, 10, 11 и более очков, то рейтинг меняется, на (по очкам) 9, 8, ..., 2, 1, 11!, то есть команда с первого места улетает на 11.
Собственно часть кода:
$point_tables = array();
$pt_key = 0;
foreach ($teams as $id => $team) {
$team_info = $model->getTeamInfoById($teams[$id]);
$team_title = $team_info->title;
$team_logo = $team_info->logo; // название команды и логотипы
$point_tables[$pt_key] = array(
'team_name' => $team_title,
'team_logo' => $team_logo,
'plays' => $playeds[$id],
'wons' => $wons[$id],
'draws' => $draws[$id],
'losts' => $losts[$id],
'gforwards' => $gforwards[$id],
'gagainsts' => $gagainsts[$id],
'avgs' => $avgs[$id],
'ptss' => $ptss[$id],); // часть турнирной таблицы: "Очки"
$pt_key ++;
}
$this->sgroup->point_tables = $model->msort($point_tables, array("ptss"));
Запустил:
echo "\$ptss==$ptss; тип: " . gettype ($ptss[$id]) . "<br />\n";
Результат:
$ptss==Array; тип: string
** понимаю, что идет некорректное сравнение, в ручном режиме если ввожу разные очки могу получить такую сортировку: 99, 9, 8, 7, 6 , 15, 14, 13, 10, 1, по моим ощущениям сравнивается только первая цифра, вторая только во вторую очередь, как если бы было : 9.9, 9, 8, 7, 6 , 1.5, 1.4, 1.3, 1.0, 1
Сломал мозг в конец.
Работа сайта: http://izhhockey[dot]ru
http://izhhockey[dot]ru/index.php/re[dot][dot][dot]ejting-2016-2017
|