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; }
请发表评论