前言
本系列文章主要是根據實戰視頻《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 的優先級不同
解題方法
重點記憶遞增/遞減運算符的運算規則,邏輯運算符的短路效果,在看到邏輯運算符要多考慮優先級的問題。