若表达式的计算结果为false并跳过elseif到else


If expression evaluates to false and skips over elseif to else

似乎出于某种原因,当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);
}