首頁  >  文章  >  後端開發  >  php的運算子與流程分析

php的運算子與流程分析

小云云
小云云原創
2018-03-15 13:16:351951瀏覽

本文主要和大家分享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 (&#39;non_existent_file&#39;) or
    die ("Failed opening file: error was &#39;$php_errormsg&#39;");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn&#39;t exist.
?>

Note: @ 運算子只對表達式有效。對新手來說一個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算子。例如,可以把它放在變量,函數和include 調用,常量,等等之前。不能把它放在函數或類別的定義之前,也不能用於條件結構例如if 和 foreach 等。

include

被包含檔案先按參數給出的路徑尋找,如果沒有給出目錄(只有檔案名稱)時則依照 include_path 指定的目錄尋找。如果在include_path 下找不到該檔案則include 最後才在呼叫腳本檔案所在的目錄和目前工作目錄下尋找。如果最後仍未找到文件則include 結構會發出警告;這一點和require 不同,後者會發出一個致命錯誤。

當一個檔案被包含時,其中所包含的程式碼繼承了 include 所在行的變數範圍。從該處開始,呼叫檔案在該行處可用的任何變數在被呼叫的檔案中也都可用。不過所有在包含檔案中定義的函數和類別都具有全域作用域。

相關推薦:

PHP運算子與運算子入門詳解

php運算子集錦

php中的運算子總結

#

以上是php的運算子與流程分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn