2014-10-28 49 views
-2

in_array心不是找到我的阵列PHP in_array没有找到数

的print_r的 $supparr

内的数字:

Array ([0] => 1 [1] => 2) 

代码:

if(in_array($r->prodid, $supparr)){ echo 'yes' ; }else{ echo 'no'; } 

我回显$ R-> PRODID并且它很好地显示了数字1.数字1在数组中,所以我无法弄清楚为什么in_array没有选择它? 它总是返回没有结果。我曾尝试下面的硬编码1,并把它在speechmarks,仍然没有结果:

if(in_array(1, $supparr)){ echo 'yes' ; }else{ echo 'no'; } 

任何想法?

+1

代替'var_dump()'代替两者。它会显示类型和字符串的长度。如果那里有些愚蠢的东西,像不可打印的字符,隐藏的html等等,它可能会抛弃比赛。 – 2014-10-28 18:53:53

+0

没关系我解决了它! – user2355278 2014-10-28 19:02:04

+1

哇,谢谢你的否定,让我禁止球员。非常感激。 – user2355278 2014-10-29 12:42:53

回答

1

使用array_search()或者你有几种解决问题的方法。一个是要输入正确的。设置第三个参数true检查所提供和正在检查的值的类型。

if(in_array($r->prodid, $supparr, true)){ 
    echo 'yes' ; 
}else{ 
    echo 'no'; 
} 

第二种方法是键入强制转换或仅将该数字设置为字符串。

if(in_array("$r->prodid", $supparr)){ 
    echo 'yes' ; 
}else{ 
    echo "no"; 
} 
+1

如果你解释过,这将有所帮助1)OP使用的方法有什么问题。 2)为什么这些“更好”。鉴于所提供的代码的工作原理如下。 – 2014-10-28 18:52:34

+0

它在两种情况下都有效吗? – 2014-10-28 18:55:41

+0

如果您修改提供的''键盘'示例使用字符串,然后它仍然正常工作。 PHP根据需要进行“自动类型转换”。 – 2014-10-28 18:57:54