2013-05-12 97 views
-1

我有這樣的功能:Array_Rand總是返回相同的值PHP獲取數組

function set_spell() { 
global $connection; 
$query = "SELECT * FROM Spells"; 
$result_set = mysqli_query($connection, $query); 
$spell_id_list = mysqli_fetch_array($result_set); 
return $spell_id_list; 

然後我嘗試輸出數組中的一個隨機ID,但我總是ID 1.

$spell_id_list = set_spell(); 
echo $spell_id_list[array_rand($spell_id_list)]; 

當我在MYSQL中運行這個查詢,我得到了所有ID的列表。爲什麼上面的代碼不隨機選擇一個?

這可能是一個愚蠢的問題,在我看到答案後我會自我打擊......但是我一直堅持的時間比我想的要長。

感謝您的幫助。

+0

你想實現什麼?隨機結果數組或只是一個隨機值? – Rikesh 2013-05-12 04:57:50

+0

不要使用'global',而是將'connection'作爲參數傳遞給 – 2013-05-12 04:59:14

+0

已經有一段時間了,但是* _fetch_row只是得到一個結果?那麼當set_spell返回時,$ spell_id_list只有在物品上沒有? – BrianHall 2013-05-12 04:59:49

回答

2

你只是你的函數只返回一個結果因此無論是創建所有獲取的成果的陣列&返回相同的,或者簡單地通過rand()在查詢中使用命令,

SELECT * FROM Spells ORDER BY RAND(); 
+0

Yeh最初在MYSQL聲明中使用了ORDER BY RAND(),但聽說這不完全是隨機的或好的做法。如何創建與所有獲取結果相比較的數組?正如我在上面的評論中所說的,我使用了msqli_fetch_array並仍然保持一致? – 2013-05-12 05:59:08

+0

只需遍歷'mysqli_fetch_array'並構建一個結果數組。 – Rikesh 2013-05-12 07:37:42