位置: 编程技术 - 正文

深入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函数)

  • 保险费车船税会计分录
  • 烟叶增值税税率10%
  • 无票收入在增值税表中填哪
  • 让渡资产使用权是指资产的所有者将
  • 研发支出月末结转转去哪里?
  • 结转上月库存商品余额会计分录
  • 垃圾袋发票类别是什么
  • 异地施工需要办理什么手续
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 核定征收是每个月都要交税吗
  • 收到的出口退税款一直有余额吗
  • 社保的计提缴纳分录怎么写
  • 总公司业务分公司开票是虚开吗
  • 物业管理企业代管基金是什么
  • 税收六项减免
  • 关联关系案例
  • 开的技术服务费可以做研发支出吗?
  • 现金预算在企业财务管理中是何地位
  • 净利润怎么计入所有者权益
  • 自制原始凭证需要复核
  • 委托代销商品账簿模板
  • win10 删除文件 没有找到项目
  • bios升级失败后如何恢复
  • 动产抵押交付生效还是登记生效
  • 两个公司的资金怎么合并
  • windows账户名a
  • 老板和公司账务处理流程
  • 家装行业如何确认收入
  • 鸿蒙系统通知栏界面怎么打开
  • 关闭开机自动启动
  • desktop病毒
  • autorun.exe无法运行
  • 股票交易税怎么算出来的
  • 出口退税科目 月底如何结转
  • 建设项目的设计阶段分为
  • 通知单位发放过节补助怎么说
  • php是面向对象编程吗
  • php发送邮箱
  • php正则匹配中文
  • vue2和vue3区别面试题
  • 2023新版拳击航母
  • 用chatgpt写insar地质灾害的论文,重复率只有1.8%,chatgpt4.0写论文不是梦
  • node-js
  • 小程序从入门到精通
  • 研发人员工资计入什么科目
  • 利润与所有者权益的区别
  • 支付版权费用账号是什么
  • 各行业税点大全最新
  • 搅拌机属于什么费用
  • 增值税发票可以重开吗
  • 收回已冲销的应收账款会计分录
  • 工程结算科目
  • 清算机构收单机构和发卡行
  • mysql语句语法
  • sql条件查询语句怎么写
  • 小规模纳税人财务报表季报怎么填
  • 个体户季报网上申报怎么填写
  • 发票上的印记能去掉吗
  • 出口不报关账务处理
  • 租赁公司账务科目
  • 法人投资属于什么会计科目
  • 固定资产房屋拆除后如何做帐务处理
  • 银行手续费没有发票
  • 个体户做账流程新手必看
  • mysql sql 基础教程
  • 怎么删除windows7
  • 初始化opengl时出错
  • ext.grid.gridpanel
  • jquery怎么获取
  • unity3d常用代码总结
  • js实现计时器在线时间
  • jquery制作图片提示效果
  • ubuntu libtorch
  • window.open()参数传递及获取
  • python怎么写函数
  • 重庆网上申报税务操作流程
  • 河北省2021城乡居民医保优惠新政策
  • 西安国家税务局官网首页
  • 提高增值税税率是什么意思
  • 广东省东莞市电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设