, так что я некоторое время ломал голову об этом и почти уже там, но все еще получаю неожиданные результаты.
Итак, у меня есть база данных, содержащая следующие данные
username | level1 | level2 | level3
user1 | 39.76072 | 79.41869 | 151.2955
user2 | 39.80072 | 80.73846 | 270.6498
user3 | 39.84072 | 80.81845 | 83.41801
user4 | 39.85321 | 80.90525 | 88.31719
user5 | Zero | Zero | Zero
Я пытался поместить их в многомерный массив по порядку от низшего к высшему, но действительно боролся.Это в основном уровни времени, и я пытаюсь создать таблицу лидеров.
Я предполагаю, что проблема заключается в том, что столбцы уровня не INT, а скорее CHAR
В настоящее время я пробую следующее
function order_by_time($a, $b) {
return $b["Level".$_POST["level"]] < $a["Level".$_POST["level"]] ? 1 : -1;
}
$query = mysqli_query($con, "SELECT userName, Level".$_POST["level"]." FROM table");
$results = array();
$unranked = array();
while($line = mysqli_fetch_array($query, MYSQLI_ASSOC)){
if($line["Level".$_POST["level"]] == "Zero"){
$unranked[] = $line;
} else{
$results[] = $line;
}
}
usort($results, "order_by_time");
$results = array_merge($results, $unranked);
Это работает для уровня 1 и для уровня 2, но не для уровня 3.Уровень 1 отображается так же, как и в примере с базой данных aboce, и уровень 2, но проблема в том, что уровень 3 так и не в правильном порядке.
похоже, что это связано с количеством символов додесятичное число.
Любой совет, как я могу решить эту проблему, не касаясь базы данных?это не совсем вариант, так как он уже используется.
Я бы очень признателен за помощь в этом: -)