亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

($a and $b)有括號,但是$a && $b 沒有括號

具體是什么意思呢?

正在回答

5 回答

運算符優先級的高低決定了他的運算順序,比如乘除比加減優先級高,在編程語言中還有運算順序,就不一一細講了。

and 在運算符中優先級比較低 ,比三元運算符低,而&&比三元運算符優先級高,所以在($a and $b)?"通過":"不通過";中要加括號,不加的話等同于$a and ($b?"通過":"不通過"); 也就是 $a and true;(邏輯與的結果也是布爾值,但在echo語句中true和false會轉化成1和0來顯示,但打印var_dump就會顯示布爾值)最后用echo語句就會輸出1;

0 回復 有任何疑惑可以回復我~

and和&&通用主要是php吸收兼容了多種語言的用法:

本質相同

a and b?

  • and采用空格分開前后元素的原因是and與前后元素連在一起編譯時無法辨別,會產生誤差。

  • 也可以用其他符號區分運算符和前后元素,比如“()”等。

a&&b

  • 不易產生誤差,沒必要用其他符號修飾。


1 回復 有任何疑惑可以回復我~

echo ($a and $b)?"通過":"不通過"; ? ?加了括號,則先算括號里的,再進行三元運算符的計算,最后輸出的結果為“通過”;

echo $a and $b?"通過":"不通過"; ? ? 這一句沒有加括號,則先算$b?"通過":"不通過"這一部分,運算結果為“通過”,然后再跟$a進行邏輯運算,最后輸出的結果為“1”.

導致輸出結果不同的原因在于,and這個運算符的優先級比三元運算符要低。

2 回復 有任何疑惑可以回復我~
#1

慕尼黑8976930

輸出結果不是“通過”嗎?為什么是“1”?
2018-12-10 回復 有任何疑惑可以回復我~
#2

這個平底鍋有點熱 回復 慕尼黑8976930

布爾類型true的返回值為1
2018-12-17 回復 有任何疑惑可以回復我~
#3

web前端_彭于晏

echo $a and $b?"通過":"不通過"; 這一句沒有加括號,則先算$b?"通過":"不通過"這一部分,運算結果為“通過”,然后再跟$a進行邏輯運算,最后輸出的結果為“1”. 為什么輸出的是1呢
2020-01-05 回復 有任何疑惑可以回復我~

如果沒有括號ture就會變成1,因為在echo中ture會被換成1,加上括號就是先運算括號中的內容

0 回復 有任何疑惑可以回復我~

and 優先級比 邏輯判斷符優先級高,加上( )會讓人更能理解

0 回復 有任何疑惑可以回復我~
#1

qq_嶸歸_0

放屁?。。?/div>
2018-10-14 回復 有任何疑惑可以回復我~
#2

_whoAmI

and要是高的話 還加括號干嘛 。。
2019-01-25 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

($a and $b)有括號,但是$a && $b 沒有括號

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號