PHP类型判断

摘要:
1》常规类型判断isset()://变量是否已经声明empty()://变量是否为空,等于说:”"、0、”0″、NULL、FALSE、array()、var$var、未定义;以及没有任何属性的对象都将被认为是空的,如果var为空,则返回TRUE。==".."){if{$deleteDirectory;}else{unlink;}}}closedir;rmdir;};判断$value是不是一个匿名function闭包if{}判断$value是不是一个Model类实例if{}4˃判断一个数组是关联数组,还是索引数组关联数组是键值对形式数据,索引数组是按照下标访问。

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($valueinstanceof 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;
}

免责声明:文章转载自《PHP类型判断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇layui 获取radio单选框选中的值postman 参数化详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP代码层防护与绕过

0x01 前言   在一些网站通常会在公用文件引入全局防护代码进行SQL注入、XSS跨站脚本等漏洞的防御,在一定程度上对网站安全防护还是比较有效的。   这里讨论一下关键字过滤不完善及常见正则匹配存在的问题,并收集了网络上常见的PHP全局防护代码进行分析。   Bypass思路:只考虑关键字被过滤如何进行Bypass的问题,暂不考虑关键字替换绕过的情况。...

php倒序显示中英文字符串

前面我们有讲过,使用php倒序显示字符串。 最后有提到,如果是中文的时候会乱码。 今天分享的就是“解决倒序显示中文字符串而不出现乱码”的问题。 function descstr($str){ $len=strlen($str); //函数返回字符串的长度: $newstr=""; for($i=$le...

PHP教程:PHPUnit学习笔记(四)断言详解

断言(Assertions)是PHPUnit提供的一系列对程序执行结果测试的方法。通俗的讲,就是断言执行程序结果为我们期待的值,如果不是则 测试失败,下面是断言方法的详细介绍,内容全部来翻译自PHPUnit的官方文档,部分方法官方介绍的很模糊,我根据官方的源码注释增加了说明和注释 assertArrayHasKey(mixed $key, array $a...

使用PHP文件锁写一个多个请求同时并发写入一个文件,要求不脏读、数据不丢失

使用PHP文件锁写一个多个请求同时并发写入一个文件,要求不脏读、数据不丢失. //并发文件操作 function filehandle($filename,$data){ $start = 0; $end = 3000; if(!file_exists($filename)){ return "文件不存在";...

PHP错误处理函数set_error_handler()的用法

定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数。 该函数用于创建运行时期间的用户自己的错误处理方法。 该函数会返回旧的错误处理程序,若失败,则返回 null。 语法 set_error_handler(error_function,error_types)   参数 描述 error_function 必需。规...

php计算持续时长(将秒转换成天时秒)

php计算持续时长 <?php /** * 计算持续时长 * * @param int $second 秒数 * @return string $duration 5天10小时43分钟40秒 */ function secondTime($seconds=0){ $duration = ''; $seconds =...