似乎出于某种原因,当if的表达式返回false时,它会跳过我的elseif,直接转到else。我试着找出一些奇怪的东西,但我的基本测试仍然失败了。什么东西?我想补充一点,我使用php5.4进行调试,如果这很重要的话,我会使用phpstorm。
$value = 2;
if ($value == 0) {
xdebug_var_dump($value);
} elseif ($value == 1) {
xdebug_var_dump($value);
} else {
xdebug_var_dump($value);
}
这是意料之中的事。您的else-if条件计算结果为False,因此它会跳到else块。
这个例子应该说明这一点:
<?php
$value = 2;
if($value == 0){
echo "if block was executed";
}
elseif($value == 1){ // 2 !== 1
echo "elseif block 1 was executed";
}
elseif($value == 2){
echo "elseif block 2 was executed";
}
else{
echo "else block was executed";
}
?>
该输出:
elseif block 2 was executed
希望这能有所帮助。
问题是您的else if
也是false(因为1!=2),所以您的代码会跳到else
。
$value = 1;
if ($value == 0) {
xdebug_var_dump($value);
} else if ($value == 1) {
// This should run:
xdebug_var_dump($value);
} else {
xdebug_var_dump($value);
}