與其他語言不同,PHP不是一種嚴格的類型語言。基本上,這意味著開發者在使用一個變量前,不必明確地設定這個變量的類型(數字、字符串、布爾值)。相反,PHP解釋程序根據存儲在變量中的信息自動探測變量的類型。
雖然這一特點使用PHP編程非常容易,但它也存在一個重要的缺陷:當你需要測試一個變量的類型時,處理類型比較松散的語言就讓人有些迷惑。幸運地是,PHP的開發者注意到這一情況,因此在其中包含了一個函數工具包,特別用它來測試變量並查明它們屬於哪個特定的字符類別——也就是說,它們是否包含字符串、整數、對象或布爾值。
下面列出了這一類別中較為有用的函數,並提供說明與應用實例。
這個函數用來檢查變量是否為空(沒有值或零值)。用此函數來檢查用戶輸入,例如,表格變量。保證它們包含有效數據。
<?php // returns false $var = "hello"; echo empty($var) ? "true" : "false"; // returns true $var = 0000; echo empty ($var) ? "true" : "false"; ?>
這個函數返回變量的類型。例如,"字符串"、"整數"、"布爾值"、"浮點值"等。在把變量插入嚴格類型的數據庫域前,一般用此函數來驗證變量是否為你期待的類型。
<?php // returns string $var = "hello"; echo gettype($var); //returns double $var = 1000.56; echo gettype($var); ?>
這個函數測試一個變量看它是否包含一個布爾值(真/假)。用此函數檢查變量是否為布爾變量。
<?php // returns true $var = false; echo is_bool($var) ? "true" : "false"; ?>
這個函數測試一個變量是否為字符串變量。用此函數檢查一個變量是否包含字符串數據。
<?php // returns true $var = "exception"; echo is_string($var) ? "true" : "false"; // returns true $var = "88408"; echo is_string($var) ? "true" : "false"; ?>
這個函數測試一個變量看它是否包含一個數字或數字字符串(字符串包括一個符號、數字與小數點)。在將變量用於計算前,用此函數來驗證它是否包含一個數字。
<?php // returns true $var = "+99.766"; echo is_numeric($var) ? "true" : "false"; // returns false $var = "b00"; echo is_numeric($var) ? "true" : "false"; ?>
這個函數測試一個變量看它是一個PHP相關或是數字順序索引數組。在循環中進行處理前,用此函數來檢查變量是否為一個數組。
<?php // returns true $var = array("tiger", "lion", "zebra"); echo is_array($var) ? "true" : "false"; // returns false $var = "zebra"; echo is_array($var) ? "true" : "false"; ?>
這個函數測試一個變量看它是否為NULL。在評估由SQL查詢返回的數據時,用此函數來檢查一個變量是否為NULL。
<?php // returns false $var = "aa"; echo is_null($var) ? "true" : "false"; // returns true $var = null; echo is_null($var) ? "true" : "false"; ?>
這個函數測試一個變量看它是否為一個PHP對象。在調用一個方法或訪問屬性前,一般用此函數來測試變量是否為PHP對象。
<?php // returns false $var = "exception"; echo is_object($var) ? "true" : "false"; // returns true $var = new Exception; echo is_object($var) ? "true" : "false"; ?>
這個函數測試一個變量看它是否已被定義。在評估表格提交的結果時,一般用此函數來測試一個變量是否被定義。
<?php // returns true $var = "yes"; echo isset($var) ? "true" : "false"; // returns false echo isset($test) ? "true" : "false"; ?>
這個函數打印一個變量的內容。用此函數來"窺探"一個變量,特別是在調試一個腳本時。
<?php $var = array("one", "two", array("red", "green"), new Exception, 467); print_r($var); ?>