本文主要和大家分享php的運算子與流程分析,希望能幫助大家對php的運算子與流程有更清晰的認識與了解。
比較運算子
#運算數1 類型 | 運算數2 類型 | 結果 |
---|---|---|
null 或string | #string | 將NULL 轉換為"",進行數字或詞彙比較 |
bool 或null | 任何其它型別 | #轉換為bool,FALSE |
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 /* 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: @ 運算子只對表達式有效。對新手來說一個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算子。例如,可以把它放在變量,函數和include 調用,常量,等等之前。不能把它放在函數或類別的定義之前,也不能用於條件結構例如if 和 foreach 等。
include
被包含檔案先按參數給出的路徑尋找,如果沒有給出目錄(只有檔案名稱)時則依照 include_path 指定的目錄尋找。如果在include_path 下找不到該檔案則include 最後才在呼叫腳本檔案所在的目錄和目前工作目錄下尋找。如果最後仍未找到文件則include 結構會發出警告;這一點和require 不同,後者會發出一個致命錯誤。
當一個檔案被包含時,其中所包含的程式碼繼承了 include 所在行的變數範圍。從該處開始,呼叫檔案在該行處可用的任何變數在被呼叫的檔案中也都可用。不過所有在包含檔案中定義的函數和類別都具有全域作用域。
相關推薦:
#以上是php的運算子與流程分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!