比較運算子
運算數 1 型別
運算數 2 型別
結果null
或string
string
將null
轉換為 "",進行數字或詞彙比較
bool
或null
任何其它型別
轉換為 bool
,false
<true
object
object
內建類可以定義自己的比較,不同類不能比較,相同類和陣列同樣方式比較屬性(php 4 中),php 5 有其自己的說明
string
,resource
或number
string
,resource
或number
將字串和資源轉換成數字,按普通數學比較
array
array
具有較少成員的陣列較小,如果運算數 1 中的鍵不存在於運算數 2 中則陣列無法比較,否則挨個值比較(見下例)
object
任何其它型別
object
總是更大
array
任何其它型別
array
總是更大
三元運算子
表示式 (expr1) ? (expr2) : (expr3) 在 expr1 求值為true
時的值為expr2,在 expr1 求值為false
時的值為 expr3。
自 php 5.3 起,可以省略三元運算子中間那部分。表示式 expr1 ?: expr3 在 expr1 求值為true
時返回 expr1,否則返回 expr3。
錯誤控制運算子
php 支援乙個錯誤控制運算子:@。當將其放置在乙個 php 表示式之前,該表示式可能產生的任何錯誤資訊都被忽略掉。
如果用 set_error_handler()
設定了自定義的錯誤處理函式,仍然會被呼叫,但是此錯誤處理函式可以(並且也應該)呼叫error_reporting()
,而該函式在出錯語句前有 @ 時將返回 0。
如果啟用了track_errors特性,表示式所產生的任何錯誤資訊都被存放在變數 $php_errormsg
中。此變數在每次出錯時都會被覆蓋,所以如果想用它的話就要盡早檢查。
<?php
/* intentional file error */
$my_file = @file ('non_existent_file') or
die ("failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
note: @ 運算子只對表示式有效。對新手來說乙個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算子。例如,可以把它放在變數,函式和includeinclude呼叫,常量,等等之前。不能把它放在函式或類的定義之前,也不能用於條件結構例如if 和 foreach 等。
被包含檔案先按引數給出的路徑尋找,如果沒有給出目錄(只有檔名)時則按照 include_path 指定的目錄尋找。如果在include_path 下沒找到該檔案則 include 最後才在呼叫指令碼檔案所在的目錄和當前工作目錄下尋找。如果最後仍未找到檔案則include 結構會發出一條警告;這一點和 require
不同,後者會發出乙個致命錯誤。
當乙個檔案被包含時,其中所包含的**繼承了 include 所在行的變數範圍。從該處開始,呼叫檔案在該行處可用的任何變數在被呼叫的檔案中也都可用。不過所有在包含檔案中定義的函式和類都具有全域性作用域。
NOT運算子與 運算子
6.4.2 not運算子與 運算子 對於簡單的條件查詢,not運算子與 運算子的功能幾乎沒有什麼區別,那麼not運算子的優勢體現在 呢?答案是它可以與其他運算子組合使用,這一點是 運算子所不能實現的。在6.4.1節已經介紹了not運算子與in運算子組合使用的例子,下面給出乙個not運算子與betwe...
陣列運算子 錯誤控制運算子與流程控制
注意 php中陣列元素的順序與下標無關,而是與加入的順序有關 v1 array 1,2,3,4 v2 array 5,6,7,8,9 r1 v1 v2 則 r1的結果為 array 1,2,3,4,9 v1 array 1,2,3,4 v2 array 2,3,1,4 v3 array 1 2,2 ...
python 運算子與流程控制
算術運算 復合運算 關係運算 比較運算 邏輯運算 判斷是否在100 200之間 print a 100 and a 200 與上式等價 print 100 a 200 判斷是否是閏年 y int input 請輸入乙個年份 print y 4 0 and y 100 0 or y 400 0 成員運...