2012-08-13 80 views
0

我有以下相當簡單的代碼,其中我需要確定是否在一個陣列中存在一定值:問題與in_array

$testvalue = $_GET['testvalue']; // 4 
$list = '3, 4, 5'; 
$array = array($list); 

if (in_array($testvalue, $array)) { // Code if found } else { // Code if not found } 

儘管很明顯,數字4是陣列中,所述代碼返回else支架內的代碼。我做錯了什麼?

+0

可能把字符串作爲3,4,5 1個字符串數組中 – 2012-08-13 20:07:12

回答

3

更改第三行:

$array = array_map('trim', explode(',',$list)); 
+0

這條簡單的線條讓它一切正常,謝謝! – DannyCruzeira 2012-08-13 20:17:13

+0

偉大:D檢查功能頁面,瞭解他們做了什麼=)(http://php.net/array_map http://php.net/trim http://php.net/explode) – Niloct 2012-08-13 20:18:31

+0

+1我錯過了你的答案完全是當我編輯我的... – jeroen 2012-08-13 20:19:30

2

你的數組只包含一個值,即字符串3, 4, 5

請參閱CodePad上的示例。

如果你想你的字符串轉換成一個數組,你可以使用:

$array = explode(', ', $list); 

我已經添加逗號後面的空格,而是一個更安全的方法是使用只是一個逗號,然後修剪所有值。

+1

感謝您的快速解答,以及分享的鏈接。它現在就像一個魅力! – DannyCruzeira 2012-08-13 20:17:37

3

$array這裏是:

$array = array('3, 4, 5'); 

這是不一樣的:

$array = array(3, 4, 5); 

所以,收拾你創建這個數組的方式..不從字符串做到這一點。

+0

如果我在開始時將值存儲在數據庫中,就像3,4,5和I一樣,然後使用$ row ['values']選擇它們,我應該使用array()之外的其他函數來完成它,或者只需要一個不同的語法? – DannyCruzeira 2012-08-13 20:12:16