位置: 编程技术 - 正文

深入php内核之php in array(细说php)

编辑:rootadmin

推荐整理分享深入php内核之php in array(细说php),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深入理解php内核,php内核源码,php内核源码,php8底层内核,php内核源码,php内核剖析,php内核剖析,php7内核剖析,内容如对您有帮助,希望把文章链接给更多的朋友!

先给大家介绍php in array函数基本知识热热身。

定义和用法

in_array() 函数在数组中搜索给定的值。

语法in_array(value,array,type)

参数 描述 value 必需。规定要在数组搜索的值。 array 必需。规定要搜索的数组。 type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。

说明

如果给定的值 value 存在于数组 array 中则返回 true。如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。

如果没有在数组中找到参数,函数返回 false。

注释:如果 value 参数是字符串,且 type 参数设置为 true,则搜索区分大小写。

无意中看到一段代码

测试了一下

[root@dev tmp]# time php b.phpreal 0m9.suser 0m4.ssys 0m0.s

竟然需要9s

in_array是这个样子的

深入php内核之php in array(细说php)

在 haystack 中搜索 needle,如果没有设置 strict 则使用宽松的比较。

needle

待搜索的值。如果 needle 是字符串,则比较是区分大小写的。

haystack

这个数组。

strict

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

那么我看一下源代码

第一步 在ext/standard/array.c 文件中

顺便看到了array_search,原来和in_array的内部实现基本一致

其中函数的参数 在./zend.h中

#define INTERNAL_FUNCTION_PARAM_PASSTHRU ht, return_value, return_value_ptr, this_ptr, return_value_used TSRMLS_CC

第二步 在ext/standard/array.c 文件中 查看php_search_array原型

我们发现 strict 这个值的不同有两种比较方式,看一下两个函数的不同之处

is_identical_function 检查类型是否相同

is_equal_function 不检查类型是否相同,所以需要隐式转换

PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法 PHP用mb_string函数库处理与windows相关中文字符昨天想批处理以前下载的一堆文件,把文件里的关键内容用正则匹配出来,集中处理。在操作文件时遇到一

PHP防止刷新重复提交页面的示例代码 PHP防止刷新重复提交页面的示例代码作为phper,我们在开发和学习php过程中,难免要经常的接受处理表单数据,然而处理表单的时候总会有一个问题,困

PHP中set error handler函数用法小结 set_error_handler()函数设置用户自定义的错误处理函数。该函数用于创建运行时期间的用户自己的错误处理方法。该函数会返回旧的错误处理程序,若失败

标签: 细说php

本文链接地址:https://www.jiuchutong.com/biancheng/276041.html 转载请保留说明!

上一篇:谈谈你对Zend SAPIs(Zend SAPI Internals)的理解(谈谈你对人民美好生活的理解)

下一篇:PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法(php中strcmp函数)

  • 发票丢失第一联盖章能用么
  • 增值税专票如何作废
  • 车辆购置税如何计算
  • 其他权益工具投资科目编码
  • 食堂没有发票怎么做账
  • 垫资公司怎么收费50万
  • 农产品增值税进项税额核定扣除办法
  • 电子发票逾期未报税怎么办
  • 外贸出口支付方式
  • 发票开出多久可以作废
  • 收购企业收购方和被收购方如何做账?
  • 合作社免税收入需要成本吗?
  • 供应商质量扣款
  • 公司客户招待费用标准
  • 企业转让库存股,应按实际收到的金额
  • 飞机票的保险费可以退吗
  • 动产抵押交付生效还是登记生效
  • 已经抵扣增值税专用发票对方要换票怎么办
  • 预计负债的计量,如何确定最佳估计数
  • 遗失发票如何处理好
  • 发票明细与实际不符是什么行为
  • 土地增值税的意思
  • 费用报销单怎么划线
  • 烟花绽放的除夕夜题目
  • vue实战技巧
  • uniapp中使用amap-vue,设置安全密钥
  • nvm for window
  • thinkphpgui
  • PHP+mysql+ajax轻量级聊天室实现方法详解
  • php基本语句
  • 开发产品的成本
  • python中排序
  • 收到预付款怎么入账
  • centos8 mongodb
  • 建筑企业结转成本依据准则
  • 个人所得税定额税率
  • file文件对象
  • SQL2005 provider: 命名管道提供程序 error: 40 无法打开到 SQL Server 的连接
  • 公司购车需要什么材料
  • 新成立企业多长时间可以销售小微企业
  • 小规模在税务局开专票需要什么材料
  • 每月工资不一样怎么算误工费呢
  • 房地产企业取得土地的契税如何记账
  • 贸易公司成本如何计算
  • 广告公司收到广告收入会计分录
  • 无发票临时工劳务费账务处理
  • 报价中含税和不含税比例
  • 应收账款是否算负债
  • 勾选发票必须当月认证吗
  • 收到不是股东的现金
  • 会计出账入账怎么做
  • sqlserver获取uuid
  • sqlserver2000删除注册表
  • 如何延迟windows更新
  • qclean.exe - qclean是什么进程 有什么用
  • mac safari浏览器网页不能正常显示
  • win7使用率
  • win8自动启动项怎么设置
  • win7系统如何调节屏幕亮度
  • win7速度
  • win7系统怎么修改开机密码
  • linux给文件赋全部权限
  • js date类型
  • nodejs解析路径
  • 清除电脑开机痕迹
  • perl脚本函数
  • cocos2dx 3.3 helloworld 入门 学习与详解
  • 安卓开发遇到的问题
  • linux编译链接命令
  • nodejs视频教程大集合
  • python中执行linux命令
  • python cx_Oracle模块的安装和使用详细介绍
  • nodejs如何安装
  • js如何修改style
  • 天津市国税局网站
  • 防伪税控维护费普通发票怎么申报
  • 换电员工作时间自由吗
  • 军工企业销售模式
  • 统计表主要业务内容
  • 成都城镇居民社保怎么缴费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设