我正在执行以下if if声明,但是数字( // 1)和数字( // 4)同时执行,我找到了它很难理解为什么。
<?php
//1
if($a == 1 && count($b) == 0) {
// do this
}
//2
elseif ($a == 1 && count($b) > 0) {
// do that
}
//3
if($a== 0 && count($b) == 0) {
// do a different thing
}
//4
else {
// do the last thing
}
?>
我已经完成了这个并且它有效,但我认为应该是一个更适合不使用elseif的方法。
else if($a== 0 && count($b) > 0) {
// do the last thing
}
答案 0 :(得分:2)
但是数字(// 1)和数字(// 4)同时执行
这是因为你在if on // 3
之前没有else
//3
if($a== 0 &&
更改为elseif($a== 0 &&
目前您有两个独立的IF条件
答案 1 :(得分:1)
你在第一个if
之后错过了一个右大括号。
此外,您在第一个条件中有一个奇怪的操作符:$$
。也许您打算输入&&
?
答案 2 :(得分:1)
$a = 10;
if ($a == 5) {
echo 'ok';
} elseif ($a == 10) { // $a is equal to 10, so it executes;
echo 'not_ok';
}
if ($a > 20) {
echo 'ok_ok';
} else { // $a is not >20 so else statement executes
echo 'not_not';
}
最终结果:not_oknot_not
如果您在同一个受让人身上执行此类测试但值不同,您可能不想执行多个测试?
我猜你需要ifif,如果
,则需要第三个块if ($a == 5) {
echo 'ok';
} elseif ($a == 10) { // $a is equal to 10, so it executes and stops the block;
echo 'not_ok';
} elseif ($a > 20) {
echo 'ok_ok';
} else { // $a is not >20, but the block was stopped on first elseif
echo 'not_not';
}
生成not_ok
即使您按照建议的第一个elseif块移动了else语句
if ($a > 20) {
echo 'ok_ok';
}
将执行,如果是,它将产生结果,这将再次导致双重结果
答案 3 :(得分:0)
您可能想要这样做......
if ($a == 1 && count($b) == 0) {
// do this
}
//2
elseif ($a == 1 && count($b) > 0) {
// do that
}
elseif ($a== 0 && count($b) == 0) {
// do a different thing
}
else {
// do the last thing
}
他们同时执行的原因是......从技术上来说,它们不是同时执行的,因为它是程序性的,但它们都被执行,因为它们在其他条件下都是不同的。如果您只想执行1次,则应将它们组合起来:)