2014-01-27 51 views
-4

if/elseif的行为与堆栈if语句一样吗?PHP的 - 如果if/elseif行为像堆栈if语句?

if($a == 2) 
{ 
    $a = 0; 
    $b = 2; 
} 
elseif($b == 2) 
{ 
    echo "Cool?"; 
} 
+2

'为什么不试试自己?' –

+0

因为我很无聊,感觉就像在得到火烧形式人机交互询问一个愚蠢的问题。 –

+0

编辑你的问题。呃? ;) –

回答

2

基于else在那里,不,它不会工作。为了使它符合你的要求,你需要删除else,并使用2 if声明,例如;

// Set default values; 
$a = 2; 
$b = 0; 

// Check $a 
if($a == 2) 
{ 
    // Change values 
    $a = 0; 
    $ b = 2; 
} 

// Check $b, which is now 2 due to the condition matching above 
if($b == 2) 
{ 
    echo "Cool?"; 
} 

我相信你略微错过了其他点。

它用于条件匹配,以确认多个可能性。

例如,让我们想象一个抽奖,奖金分成几个范围;

数字01 - 10 = $ 5。 Numbers 11 - 20 = $ 10。 21 - 30 = 20美元。

你的代码可能看起来像

<?php 
$random_result = mt_rand(0, 30); 

if ($random_number > 20) { 
    $amount = 20; 
} 
else if ($random_number > 10) { 
    $amount = 10; 
} 
else 
{ 
    $amount = 5; 
} 
echo 'The jackpot for today was $' . $amount . '!'; 
+0

我不认为我完全错过了这一点。我只是觉得有趣的是,根据我的经验,我不能根据我的经验来决定if/elseif是否像堆叠if语句那样行为(例如,您已经说明我可以做以满足我询问的结果)。谢谢你的扩展答案。 –

1

不,如果$a2if检查时,elseif进行检查。您应该考虑整个if...elseif部分的一个单个声明,其中第一个评估为true的条件会阻止其余的被检查。

如果elseif是一个单独的if,那么是的,它会输出Cool?

但事实并非如此。

所以它不会。

+0

非常感谢。 –

1

您的代码的elseif部分将不会执行,如果之前有任何if/elseif...为真。 if/elseif/...块按顺序执行,一旦其中一个为真,则不考虑其他块。

+0

感谢您的时间。 –