php如果内部foreach错误
我有一个问题,如果内部foreach。 代码的答案必须是“相等”,但必须是“相等” 这是我的密码php如果内部foreach错误,php,foreach,Php,Foreach,我有一个问题,如果内部foreach。 代码的答案必须是“相等”,但必须是“相等” 这是我的密码 $list=array( "X" => "X", "0" => "0", "2" => "2", "3" => "3" ); $var="X"; foreach ($list as $key => $val){ if ($var==$key) { echo 'Equal';
$list=array(
"X" => "X",
"0" => "0",
"2" => "2",
"3" => "3"
);
$var="X";
foreach ($list as $key => $val){
if ($var==$key) {
echo 'Equal';
}
}
使用:
您需要==
,因为var\u dump($var==0)
返回true,这在类型转换之后
var_dump('X' == 0);//true
参考-http://php.net/manual/en/language.operators.comparison.php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true
如果将数字与字符串进行比较,或者比较涉及数字字符串,则会将每个字符串转换为数字,并以数字形式执行比较。这些规则也适用于switch语句。当比较为===或!==时,不会发生类型转换因为这涉及到比较类型和值
$a == $b Equal TRUE if $a is equal to $b after type juggling.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type.
所以,试着用“==”而不是“==”你到底想要什么?想知道为什么结果是相等的,只有一个数组元素的键是“X”,所以它应该是相等的。为什么不在数组中()相同的键和值呢?我的答案符合OP的要求,而且很实用。这是答案,但请解释为什么它是答案。(我没有投反对票)有时类型杂耍真的是违反直觉的澄清==是一种松散的比较语法,它会将变量转换为多个类型“类型杂耍”,因此如果将(int)1与(string)1进行比较,您将得到一个真实的返回。使用===运算符不会键入juggle,但会返回精确匹配。将(int)1与(string)1进行比较将返回false,因此建议在比较字符串时使用==。很明显是的,但是如果$var来自$\u GET variable,那么“===”不起作用如果form GET,同样的情况会发生吗?
$a == $b Equal TRUE if $a is equal to $b after type juggling.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type.