位置: 编程技术 - 正文

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

  • 实收资本的账务处理是怎样的
  • 报销人和经办人怎么区分
  • 预计所有者权益怎么计算
  • 资产负债表项目的编制方法
  • 企业应收账款无论是否带息,在年末资产负债表中均应以
  • 销售货物尚未收到会计分录
  • 非独立核算的分公司可以开票吗
  • 支付股权投资的会计科目
  • 跨年度销售退回所得税
  • 小规模纳税人需要交哪些税
  • 个体户办营业执照需要什么证件和材料
  • 怎么开个体工商户
  • 已经计提的增值税怎么退
  • 公司一般根据什么裁员
  • 预付年金终值与普通年金终值的关系
  • 不计提盈余公积可以分红吗
  • 研发人员奖金的会计分录
  • 员工受伤报销
  • 月销售额3万以下免征
  • 补交以前年度增值税的科目处理
  • SymSPort.exe - SymSPort是什么进程 有何作用
  • 为什么网页总是跳掉
  • Linux系统中怎么定位到java代码的方法级
  • 税控机抵减增值税税额
  • 委托代销委托方的账务处理
  • 出口企业增值税怎么算
  • php require include
  • 资产减值损失的计算公式
  • 分红财务做账
  • 国产设备投资抵免企业所得税
  • php检测是否登录
  • thinkphp5.1完全开发手册
  • 栖息在树林中
  • tensorflow2安装
  • 企业所得税季度申报表A类
  • 绿化管理服务经营范围
  • Vision Transformer 模型详解
  • 汇算清缴应补税额为负数
  • 什么叫相机标定
  • 设备租赁费属于设备费吗
  • 对于企业无法支付的应付账款
  • 因果推断的常用标准
  • python 命令行参数解析
  • vue :data="data"
  • 出口退税抵减应计入哪里
  • 长期股权投资权益法转成本法
  • 交易性金融资产的入账价值
  • 以物易物对企业有什么好处
  • 保税区里的企业叫什么
  • 健身房注册公司能注册医疗吗?
  • 会计从业资格证取消了吗
  • 个税申报系统非正常可以改为正常吗?
  • 发票开的是推广服务费计入什么费用?
  • 固定资产怎么做账
  • 铁路运输印花税按什么比例交
  • 信用减值损失6702
  • 怎样可以冲销企业微信
  • 对公账户给私人账户转账,几天到账
  • 管理费用的明细科目如何设置
  • sql2008开启远程连接
  • mysql+php
  • apt-key
  • 如何卸载win8系统
  • pkjobs.exe - pkjobs是什么进程 有什么用
  • 安卓手机屏幕不好使了怎么办
  • iframe的高度自适应
  • 字符串查找子串
  • shell脚本的实现
  • android:Background线程池和UiThread线程池
  • c语言node定义
  • javascript例题
  • 实现断点续传的工具软件
  • 加油的电子发票在手机哪里
  • 开出去的专用发票存根怎么处理的
  • 陕西税务管网
  • 车价36万保险一般多少钱
  • 进口柴油消费税是多少
  • popl期刊
  • 地方税务局几点下班
  • 混凝土搅拌站如何结转成本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设