$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
echo $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
echo $a.'-'.$b;
輸出6-16-2
。我不明白的1
這裏。
的Perl:
$a = 2;
$b = 3;
if($b=1 && $a=5)
{
$a++;
$b++;
}
print $a.'-'.$b;
$a = 2;
$b = 3;
if($a=5 and $b=1)
{
$a++;
$b++;
}
print $a.'-'.$b;
輸出6-66-2
,我不明白這裏的第二6
。
任何人都知道原因?
其實我知道&&
比and
有更高的優先級,但我還是有把握的時候才知道這一點。
UPDATE
現在我明白了一個PHP,什麼Perl的一個?
在Python中,它首先將錯誤轉換爲false或最後一個返回。我認爲Perl的做法是一樣的 – RiaD
@JeRog - 一個'&&'表達式將停止評估何時遇到一個錯誤的值,因此在'1 && 0 && 5'中,'0'是最後一個值。同樣,'1 && undef && 5'將評估爲'undef'。 – mob
@Je Rog如果左邊的參數爲false,則返回左邊的參數;無論如何,它都會返回正確的論點。如果左參數爲true,則返回它的左參數,否則返回它的正確參數。所以'&&'鏈返回最左邊的假值(或者如果全部爲真,則返回最後一個值),而一串'||'返回最左邊的真值(或者最後一個值,如果全部爲假)。 – hobbs