PHP in_array没有返回预期的结果

时间:2012-02-03 18:19:41

标签: php arrays

当我尝试确定某个用户是否在一个用户数组中时,由于某种原因,当用户位于第0位时它只返回true。

对于我的生活,我无法弄清楚我做错了什么。


这不会回应“真实”

echo $usersign; // RDW

print_r($these_analysts[0]); // Array ( [0] => JKB [1] => RDW )

if(in_array($usersign,$these_analysts[0])){
    echo "True";
}

这回应了“真实”

echo $usersign; // RDW

print_r($these_analysts[0]); // Array ( [0] => RDW [1] => CLM )

if(in_array($usersign,$these_analysts[1])){
    echo "True";
}

编辑:

vardump给出了一个更全面的数组视图,而print_r确实显示了尾随空格,它没有引起我的注意。

由于某种原因,每个数组的第一个元素都给出了string3,而其他所有元素都给了string4。

6 个答案:

答案 0 :(得分:4)

你有很多语法错误。

当你使用字符串时,将字符串放在单引号或双引号中总是更好。哪一个(就速度而言)并不重要。

此外,您需要在元素之间使用逗号。

我输入了以下代码并且有效。

$usersign = 'RDW';  
$these_analysts[0] = array( 'JKB', 'RDW' );    
print_r( $these_analysts );   
if(in_array($usersign,$these_analysts[0])) echo "True"; 

答案 1 :(得分:2)

尝试:

$usersign = 'RDW';

$these_analysts[1] = Array ( 0 => 'RDW', 1 => 'CLM' );

if(in_array($usersign,$these_analysts[1])){
       echo "True";
}

这应该有效。

答案 2 :(得分:1)

如果在使用RDW之前将RDW指定为常量而不定义这些常量,则会发生这种情况(至少在我的测试中)。如果你把你的首字母用双引号(即使用显式字符串),那么一切正常。如果要将它们用作常量,请首先定义这些常量:

define("RDW","RDW");
define("JKB","JKB");

然后您的代码再次按预期工作。

答案 3 :(得分:0)

你在一半的行上遗漏了;,你在它们周围使用基本字符串而不是",而你的Array语法无效(应该是{{1} }})。也许如果这些问题得到解决,它可能会有效。

答案 4 :(得分:0)

您有标点符号错误:

$these_analysts[0] = Array ( [0] => JKB [1] => RDW )

应该是

$these_analysts = Array ( 0 => "JKB", 1 => "RDW" );

答案 5 :(得分:0)

* 这是您需要做的实际方式*

$usersign = 'RDW';
$these_analysts = array ( 0 => 'RDW', 1 => 'CLM' );
if(in_array($usersign,$these_analysts)){
   echo "True";
}