PHP基礎複習(三)——運算符

前言

本系列文章主要是根據實戰視頻《360大牛:全面解讀PHP面試》學習過程中記錄的學習筆記,期間也會加入查找資料和平時學習中學習到的知識。

錯誤控制符

php支持一個錯誤運算符:@。當將其放置在一個PHP表達式之前,該表達式可能產生的任何錯誤信息都將被忽略掉。

<?php
error_reporting(-1);

var_dump($afdsdafs);  //輸出  Notice: Undefined variable: afdsdafs in /usercode/file.php on line 4   NULL

@var_dump($afdsdafs); //輸出  NULL

運算符優先級

遞增/遞減 >邏輯非(!) > 算術運算符(先乘除取模,後加減)  >  大小比較 > (不)相等比較 > 引用(&) >  位運算符(^) >位運算符(|) > 邏輯與(&&) >   邏輯或(||)  >  三目(?:)  > 賦值(=)   > and  >  xor  >  or

括號的使用可以增加代碼的可讀性,推薦使用。

== 和=== 的區別

==用於判斷值是否相等,===用於判斷值和類型是否相同。

<?php

$i = 1;
$j = '1';

if ($i == $j) {
    echo 'i等於j'.PHP_EOL;     //  i等於j
} else {
    echo 'i不等於j'.PHP_EOL;
}

if ($i === $j) {
    echo 'i等於j'.PHP_EOL;
} else {
    echo 'i不等於j'.PHP_EOL;   //i不等於j
}

等值判斷

0, 0.0, '', '0', false,  array() ,  NULL   (整型0、浮點0.0、布爾false、空字符串、0字符串、空數組、NULL)

視頻中說道,(FALSE的七種情況都是等值的)。經過代碼實測,該說法不完全正確:

<?php

var_dump(array() == false); //爲true

var_dump(array() == null);  //爲true

var_dump(array() == array());  //爲true

var_dump(array() == 0);     //爲false  或者說數組與上述除外的其他情況比較都爲false

var_dump(array() == 0.0);   //爲false  

var_dump(array() == '0');   //爲false  

var_dump(array() == '');    //爲false  


 

遞增/遞減運算符

①對布爾值進行遞增/遞減操作不改變其原來的布爾值:

true++  true--  ++true   --true  false++ false--  ++false  --false  布爾值不變

②遞減NULL值沒有效果;遞增NULL值爲1。

<?php

$a;
$b;
$test1 = ++$a;
$test2 = --$b;
var_dump($test1); //int(1)

var_dump($test2);  //NULL

③遞增和遞減在前就先運算後返回,反之就先返回,後運算。

④++i 比 i++效率高,後加會產生一個臨時變量用於保存i的值。

邏輯運算符

短路作用

|| 和 &&  與  or 和 and 的優先級不同

 

解題方法

重點記憶遞增/遞減運算符的運算規則,邏輯運算符的短路效果,在看到邏輯運算符要多考慮優先級的問題。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章