2012-08-13 87 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