2016-06-12 133 views
3

我不理解这个?quirk?的PHP的所有...因为我正在查看其他人的代码,我看到有些人完全忽略了else语句,只是放置一个“返回false”;声明。PHP if/else返回和回显之间的区别?

看来这个技巧只适用于return语句,正如你在下面的例子中看到的,它在回显文本时不起作用。

这很奇怪,以案例二为例,当然这个函数是继续读取的,所以函数会在if语句里面返回“true”,因为条件符合了,但是当它离开if/else语句时它应该会返回返回FALSE,因为没有ELSE语句。这不会发生,并且该函数仍然返回true。

我无法理解这个,所以希望有人能解释一下吗?

// Case 1 
function checkNumber1($number) { 
    if ($number === 10) { 
     return true; 
    } else { 
     return false; 
    } 
} 

$number = 10; 
var_dump(checkNumber1($number)); // Returns true 






// Case 2 
function checkNumber2($number) { 

    if ($number === 10) { 
     return true; 
    } 
    return false; 
} 

$number = 10; 
echo '<br>'; 
var_dump(checkNumber2($number)); // Also returns true?? 






// Case 3 
function checkNumber3($number) { 
    if ($number === 10) { 
     echo 'true' . '<br>'; 
    } else { 
     echo 'false' . '<br>'; 
    } 
} 

$number = 10; 
echo '<br>'; 
checkNumber3($number); // Returns true 






// Case 4 
function checkNumber4($number) { 

    if ($number === 10) { 
     echo 'true' . '<br>'; 
    } 
    echo 'false' . '<br>'; 
} 

$number = 10; 
checkNumber4($number); // Returns true and then false??? 
+1

在情况2中,if语句中的'return true'退出该函数。如果if语句中的'echo'true''不会退出函数,那么'echo'false''也会执行。 – jszobody

+1

我认为这里很重要的一个重要区别是'return'结束了函数!,而'echo'没有。所以case 1)'10 == 10' - > If语句 - >返回true - >函数结束case 2)'10 == 10' - > if语句 - >返回true - >函数结束(注意:由于return结束函数,它将不会执行进一步)情况3)'10 == 10' - >如果语句 - >回声真正 - >功能命中结束并停止案例4)'10 == 10' - >如果语句 - >回声真实 - >函数进一步执行 - > echo false - >函数结束 – Rizier123

+0

面包屑你们很快,所以返回退出函数,辉煌,现在我明白了!谢谢! –

回答

相关问题