1

似乎由于某种原因,当 if 的表达式返回 false 时,它​​会跳过我的 elseif 并直接转到 else。我试图找出一些奇怪的东西,但我的基本测试仍然失败。是什么赋予了?我想补充一点,如果这很重要,我正在使用内置的 php 5.4 进行调试和使用 phpstorm。

$value = 2;

if ($value == 0) {
    xdebug_var_dump($value);
} elseif ($value == 1) {
    xdebug_var_dump($value);
} else {
    xdebug_var_dump($value);
}
4

2 回答 2

2

这是预期的。你的 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

希望这可以帮助。

于 2013-06-28T22:00:04.173 回答
0

问题是您else if的也是错误的(因为 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);
}
于 2013-06-28T21:46:28.517 回答