当我尝试确定某个用户是否在一个用户数组中时,由于某种原因,当用户位于第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。
答案 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";
}