PHP数组is_*()对比和解析

这篇篇文章 讲的是 PHP一系列is函数

is_array — 检测变量是否是数组

is_bool — 检测变量是否是布尔型

is_callable — 检测参数是否为合法的可调用结构

is_dir — 判断给定文件名是否是一个目录

is_double — is_float() 的别名

is_float — 检测变量是否是浮点型

is_file — 判断给定文件名是否为一个正常的文件

is_int — 检测变量是否是整数

is_null — 检测变量是否为 NULL

is_numeric — 检测变量是否为数字或数字字符串

is_object — 检测变量是否是一个对象

is_string — 检测变量是否是字符串

如is_null,is_object,is_array,is_string,is_resource,is_bool,is_long,is_float 今天补充一下..他们的判断方法是一样的,只讲一个is_null其他的就能明白了. is_null是一个函数.定义在 ext/standard/type.c文件中. 所有 类型的操作都在这个文件里,settype,gettype,intval等函数也在这里.

它调用了 php_is_type函数,该函数 后面传递的是要检测的类型.

第九行 会调用 Z_TYPE_PP来获取传递进来的值的类型..前面文章有讲到.

如果不等于该函数的第二个参数type直接返回FALSE; 如果等于我们要检测的类型,但是 对象或者是资源 就还要做相应的判断. 是对象的话,十六行会获取 _zend_class_entry 结构的name值,该值必须等于INCOMPLETE_CLASS INCOMPLETE_CLASS是一个宏, #define INCOMPLETE_CLASS “__PHP_Incomplete_Class” 也就是说必须是一个类的实例化才行.

原文发布于微信公众号 - 风帆(wdswhf)

原文发表时间:2019-09-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券