位置: 编程技术 - 正文

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

  • 销售返利可以计入销售费用吗
  • 补缴以前年度附加税如何入账
  • 个纳税人申报
  • 科研材料怎么买
  • 金税盘减免政策依据
  • 有进项发票还用交税
  • 开具红字信息表后怎么开负数发票
  • 发票开票人是管理员可以吗
  • 加油站企业规模大小怎么划分
  • 房改房增值税
  • 承兑到期没兑现怎么处理
  • 保修期内免费维修
  • 工商不变新股东是什么
  • 制造费用属于成本类还是损益类
  • 一台电脑上能装多个金税盘吗?
  • 税收缴款书怎么做凭证
  • 不能抵扣的福利发票要勾选吗为什么
  • 待解报预算收入扣款怎么做账
  • 防洪保安基金应用范围
  • 购买转账支票费用
  • 其他专项收入怎么做账
  • 高价转让股份
  • 经营预算的基本内容包括
  • 车辆的代驾费应该怎么收
  • linux minor
  • 怎么查开出去的发票原票
  • 软件测评费用标准
  • 右击任务栏启动怎么关闭
  • 收藏的php常用函数是什么
  • 金融资产减值损失计入什么科目
  • 个人销售住房是否免征土地增值税
  • 折扣额在备注栏
  • 深入解析windows第7版卷2
  • 库存商品损失怎么做账
  • 收到某单位投入一批原材料
  • mysql和php连接
  • photo-sphere-viewer中文文档
  • 非公司员工可以举报公司不交社保吗
  • 5 分钟速通 SVG
  • uni appp
  • 在建工程核算的内容有哪些
  • 交通费 抵扣
  • 总分类账户余额表怎么做账
  • 小规模可以不用软件做账吗
  • 借款费用为什么可以企业所得税税前扣除
  • 经营活动的现金流量占全部现金流量的比重越大
  • 空调维修保养方案
  • 个人独资企业个税怎么交
  • 子公司注销前资金怎么办
  • 审计如何判断跨期
  • 收到车辆购置税发票怎么做账
  • 政府补助的内容
  • 会计账务做得混乱的原因
  • 会计账簿的设计要与会计报表相衔接 ()X
  • 企业短期借款可以是个人吗
  • windowsxp能用pr吗
  • windows2008 iis安装
  • 双屏windows
  • windows10的便签纸在哪
  • Ubuntu14.04 的 SSH 无密码登录的设置方法
  • 苹果mac os x 怎么样使用光盘
  • 小米4刷windows 10
  • windows8有几个模式
  • linux系统怎么启动软件
  • 如何在win7上打开win10软件
  • linux012
  • opengl示例
  • bat批处理视频教程
  • perl判断字符串相等
  • 希尔排序数据结构的代码
  • unity连接数据库能做什么
  • bootstrap 可编辑下拉检索
  • unity3d操作
  • nginx与php
  • unity unite
  • 简单谈谈你对中国国防建设的认识
  • 中国税务定额发票怎么开
  • 山东国税网
  • 江苏国税局官网
  • 小规模纳税人应交增值税账务处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设