我将保持简短,这是我的代码:
<?php
$arr = array(
1,
2,
3,
"x" => "aaa",
"y" => "bbb"
);
foreach($arr as $k => $v){
if($k !="y" && $k != "x") {
echo $v . " ";
}
}
?>
这就是结果:
2 3
它就像这样:
$example = 0;
if ($example == 'x' || $example == 'y') {
echo "true";
}
会回应“真实”,而不是一无所获。
基本上,我的问题是:如果0不等于“x”或“y”,它为什么跳过回显数组的第一个元素?
答案 0 :(得分:4)
==
为您排序类型。
0
是int
,因此它会将y
和x
转换为int。哪个不可解析为一个,并且将变为0.字符串&#39; 0x&#39;会变成0,会匹配!
使用!==
http://sandbox.onlinephpfunctions.com/code/bed936181e386ddfe75e4ef92771bf61ad2e7915
<?php
$arr = array(
1,
2,
3,
"x" => "aaa",
"y" => "bbb"
);
foreach($arr as $k => $v){
if($k !=="y" && $k !== "x") {
echo $v . " ";
}
}
// result:
// 1 2 3
答案 1 :(得分:2)
这是一个很好的,我认为我找到了修复,而不是在if语句的两个评估中使用!=,尝试使用!==所以,将你的if语句更改为:
if($k !== "y" && $k !== "x")
请参阅上面的Unamata Sanatarai答案,解释得非常好。