PHP 標配提供許多函式和結構。也有一些函式需要編譯特定的 PHP 擴展,否則會出現致命的「未定義函式」錯誤。例如,要使用 影像 函式,例如 imagecreatetruecolor(),PHP 必須編譯 GD 支援。或者,要使用 mysqli_connect(),PHP 必須編譯 MySQLi 支援。每個版本的 PHP 都包含許多核心函式,例如 字串 和 變數 函式。呼叫 phpinfo() 或 get_loaded_extensions() 將會顯示載入到 PHP 中的擴展。另請注意,許多擴展預設為啟用,並且 PHP 手冊依擴展劃分。有關如何設定 PHP 的資訊,請參閱 設定、安裝 和個別的擴展章節。
手冊的「如何閱讀函式定義」章節中說明了如何閱讀和理解函式的原型。了解函式的回傳值,或者函式是否直接對傳入的值進行操作非常重要。例如,str_replace() 將回傳修改後的字串,而 usort() 則直接對傳入的變數本身進行操作。每個手冊頁面也包含每個函式的特定資訊,例如函式參數資訊、行為變更、成功和失敗的回傳值,以及可用性資訊。了解這些重要(但通常很細微)的差異對於編寫正確的 PHP 程式碼至關重要。
注意:如果傳遞給函式的參數不是它預期的類型,例如在預期 字串 的地方傳遞了 陣列,則函式的回傳值未定義。在這種情況下,它可能會回傳
null
,但这只是一種慣例,不能作為依據。從 PHP 8.0.0 開始,在這種情況下應該會拋出 TypeError 例外。
注意:
在強制模式下,內建函式的純量類型預設可以為 null。從 PHP 8.1.0 開始,不建議將
null
傳遞給未宣告為可為 null 的內部函式參數,並在強制模式下發出棄用通知,以便與使用者自訂函式的行為一致,在使用者自訂函式中,純量類型需要明確標記為可為 null。例如,strlen() 函式預期參數
$string
為不可為 null 的 字串。由於歷史原因,PHP 允許在強制模式下將null
傳遞給此參數,並且該參數會被隱式轉換為 字串, resulting in a""
值。相反,在嚴格模式下會發出 TypeError。<?php
var_dump(strlen(null));
// 從 PHP 8.1.0 開始 "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated"
// int(0)
var_dump(str_contains("foobar", null));
// 從 PHP 8.1.0 開始 "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated"
// bool(true)
?>