2011-05-03 91 views
-1

它不工作時,我從URL中獲得的價值就像selected.php?aa=2,3,在PHP爆炸數據庫

$mainclass = $_GET['aa']; 
$classarray = explode(",", $mainclass); 
$classarray = array_walk($classarray, 'intval'); 
$classa  = implode(',', $classarray); 

$makefeed = mysql_query("SELECT * FROM studentnew WHERE fieldname IN (".$classa.")"); while ($cc = mysql_fetch_array($makefeed)) { } 
+0

什麼/你叫什麼結果/什麼是不正常的錯誤? – Robik 2011-05-03 12:12:42

+1

'intval'不改變數組的值和'array_walk'返回一個布爾值,而不是陣列。請參閱文檔:http://php.net/manual/en/function.array-walk.php您正在尋找'array_map'。 – 2011-05-03 12:13:45

+0

請說明你的需求.....? – Pushpendra 2011-05-03 12:14:43

回答

1

當使用array_walk(),鍵/索引傳遞給回調函數(intval())作爲第二個參數。

intval()的第二個參數是基數。您不希望數組索引作爲基數傳入。這將返回不正確的結果(我假設你希望它們都是十進制的)。

相反,使用array_map()

此外,array_walk()作品參考,並返回一個布爾值。所以,你要分配這個布爾到$classarray變量。

1

變化

$classarray = array_walk($classarray, 'intval'); 

array_walk($classarray, 'intval'); 

array_walk返回布爾值,不陣列。 http://ru2.php.net/manual/en/function.array-walk.php

+0

這不起作用。如果你想改變這個值,你必須定義這個參數作爲參考,我不認爲'intval'正在這樣做。 – 2011-05-03 12:16:39

1

您需要array_map

變化

$classarray = array_walk($classarray, 'intval'); 

$classarray = array_map('intval' ,$classarray);