這裏對PHP很新穎,但無法找到相關信息來幫助我解決這個問題。函數使用array_multisort但不知道如何指定密鑰
基本上我正在寫一個函數來在一天內從我的mysql數據庫中獲取馬的比賽時間,並對它們進行排序。所以我拉入3個值 - racedate,racevenue和sections。部分是我可以指定我是否想要他們最後的200米時間,他們最後的400米時間等等。
我運行查詢,然後把結果放到一個數組中。然後我想用$ sections的值對數組進行排序。
我的問題是創建數組$ time來使用array_multisort。我可以使它工作的唯一方法是對'time200'進行硬編碼以指定要分類的內容。我真的希望能夠通過$ section變量進行排序,所以我可以在$ sections傳入的任何類型的列名稱(即time200,time400,time600等)上使用此函數。
把$ sections而不是time200不起作用(這對你知道更多你正在做什麼的人來說是顯而易見的),但我不明白爲什麼。
感謝您的幫助!
function sectionalrank($racedate, $racevenue, $sectional) {
global $connection;
$query = "SELECT horsename, $sectional ";
$query .= "FROM runs ";
$query .= "WHERE racedate = '$racedate' ";
$query .= "AND venue = '$racevenue' ";
$query .= "AND $sectional > 0";
$result = mysqli_query($connection, $query);
$array = array();
while($row = mysqli_fetch_assoc($result)) {
$array[] = $row;
}
$times = array();
foreach ($array as $a) {
$times[] = $a['time200'];
}
array_multisort($times, SORT_ASC, $array);
return $array;
}
最好直接從查詢中用ORDER BY子句對結果進行排序。你也應該爲你查詢參數使用準備好的語句。這個代碼是廣泛開放的SQL注入。 – Orangepill
啊當然!非常感謝 –