1》常規類型判斷
isset(): //變量是否已經聲明
empty(): //變量是否為空,等於說:”"、0、”0″、NULL、FALSE、array()、var $var、未定義;以及沒有任何屬性的對象都將被認為是空的,如果 var 為空,則返回 TRUE。
defined()://常量是否已經定義 define()
is_numeric ( mixed var ): //檢測變量是 否為數字或數字字符串
is_bool(): // 檢測變量是否是布爾型
is_float(): // 檢測變量是否是浮點型 和is_double,is_real()都一樣的用法
is_int(): // 檢測變量是否是整數is_integer() 一樣的 用法
is_string(): // 檢測變量是否是字符串
is_object(): // 檢測變量是否是一個對象
is_array(): // 檢測變量是否是數組
is_null(): // 檢測變量是否為 NULL 值是否是NULL大小寫敏感
2》全局方法和對象內方法判斷
全局方法判斷:bool function_exists ( string $function_name
)
對象內部方法判斷:bool method_exists ( mixed $object
, string $method_name
)
3》對象實列判斷 instanceof
//以下是匿名函數定義 $value= function($path) use (&$deleteDirectory) { $resource = opendir($path); while (($item = readdir($resource)) !== false) { if ($item !== "." && $item !== "..") { if (is_dir($path . "/" . $item)) { $deleteDirectory($path . "/" . $item); } else { unlink($path . "/" . $item); } } } closedir($resource); rmdir($path); }; 判斷$value是不是一個匿名function閉包 if($value instanceof \Closure) { } 判斷$value是不是一個Model類實例 if($value instanceof Model) {
}
4>判斷一個數組是關聯數組,還是索引數組
關聯數組是鍵值對形式數據,索引數組是按照下標訪問。思路是取出數組的keys,查看是數字還是字符串
/** * 判斷數組是否為索引數組 */ function is_indexed_array($arr) { if (is_array($arr)) { return count(array_filter(array_keys($arr), 'is_string')) === 0; } return false; } /** * 判斷數組是否為連續的索引數組 * 以下這種索引數組為非連續索引數組 * [ * 0 => 'a', * 2 => 'b', * 3 => 'c', * 5 => 'd', * ] */ function is_continuous_indexed_array($arr) { if (is_array($arr)) { $keys = array_keys($arr); return $keys == array_keys($keys); } return false; } /** * 判斷數組是否為關聯數組 */ function is_assoc_array($arr) { if (is_array($arr)) { // return !is_indexed_array($arr); return count(array_filter(array_keys($arr), 'is_string')) === count($arr); } return false; } /** * 判斷數組是否為混合數組 */ function is_mixed_array($arr) { if (is_array($arr)) { $count = count(array_filter(array_keys($arr), 'is_string')); return $count !== 0 && $count !== count($arr); } return false; }