在PHP中,如果有一個條件是這樣的:檢查數值和比較值是否符合條件&&?
if (is_numeric($my_var) && $my_var == 1) {
}
如果第一部分,如果是假的,沒有第二部分($my_var == 1
)得到過執行?
謝謝!
在PHP中,如果有一個條件是這樣的:檢查數值和比較值是否符合條件&&?
if (is_numeric($my_var) && $my_var == 1) {
}
如果第一部分,如果是假的,沒有第二部分($my_var == 1
)得到過執行?
謝謝!
在您的示例$my_var == 1
不會被執行(如果它不是數字)。 PHP會確定第一部分的計算結果爲false
,所以在執行第二部分時沒有任何好處,因爲您使用的是AND運算符。
一個例子:
if(isset($_GET['something']) && $_GET['something'] == '1')
{
}
如果查詢字符串變量something
缺少那麼它不檢查它是否等於1
。如果確實如此,它可能會產生一個Undefined index
通知。
您也可以驗證此行爲的東西,如:
$test = '2';
if($test == '1' && die('dead'))
{
}
echo 'execution continues....';
設置$test = '2'
和die()
不會停止執行。將其設置爲1
並且模具將執行並停止,因此您將不會看到Execution continues...
編輯:有一些通用的information here(不是PHP特定的)。
您可以像使用
if (is_numeric($my_var)) {
if($my_var == 1)
{
// your code
}
}
我知道我可以做到這一點。我想知道如果我這樣做PHP的另一種方式。 –
如果第一個條件是false
如果您使用&&
,則第二個條件將不會執行。您可以自己嘗試:
function a(){
echo 'a';
return true;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
這將輸出:ab
。
function a(){
echo 'a';
return false;
}
function b(){
echo 'b';
return true;
}
if (a() && b())
{
//do something
}
輸出a
。
我給你這個例子,因爲我無法找到任何文檔,但是這被稱爲this section
第一評的call-by-需要或懶惰評估。
注:在某些情況下,儘管第一個條件狀態,第二個函數仍然執行是有用的或必要的。在這種情況下,您可以使用&
operator。使用按位運算符可以使用數字,而不是使用布爾值。因爲PHP解釋器應該知道,這兩個值之前和之後&
運營商將執行兩種功能(a() & b()
)和true
,false
被評估爲1
和0
,分別1 & 0 => 0
將作爲false
在if
聲明進行評估。
不,它不是,這是你的「懶惰評價」 - http:// en。wikipedia.org/wiki/Lazy_evaluation –