code - php中關於運算子的一些疑問?

來源:互聯網
上載者:User
在php中(或者其他語言中也有?),類似

if(!$a=b){    .....}

或者

empty($a)&&$a=array()

是什麼意思?這樣的寫法有什麼好處?

回複內容:

在php中(或者其他語言中也有?),類似

if(!$a=b){    .....}

或者

empty($a)&&$a=array()

是什麼意思?這樣的寫法有什麼好處?

不要這樣寫。
例如我寫了幾年代碼了,第一眼就不知道 ! 和 = 的優先順序

$a = someFunc();
if ($a) {
abc();
}

if ($a = someFunc()) {
abc();
}

if ( !($a = someFunc()) ) {
abc();
}

if ( ! $a = someFunc() ) {
abc();
}

($a = someFunc()) && abc();

最後,還是都用回if else 吧,代碼一時爽,維護愁斷腸.

empty($a) && $a=array()//這是短路運算子,如同if(empty($a)){   $a=array();}

if(!$a=b){

.....

}
先給$a賦值b
再!$a 這裡注意運算子優先順序即可

第二個&&前面的運算式只是判斷變數是否為空白;後面的是判斷是否為空白數組,這裡就可以省略了

    $a = FALSE;     $b = TRUE;     $c = 2;        // $a為false,短路了,$c沒有賦值20    $a && $c=20;    echo $c; // 2    echo "
"; // $b為true,走了下一步,$c被賦值20 $b && $c=20; echo $c; // 20

你的代碼可以理解為:如果不存在$a,就是true,走下一步,給$a賦值;

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.