位置: 编程技术 - 正文

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

  • 税法基本原则是什么意思
  • 保理公司发放贷款
  • 税控盘维护费开的是普票可以抵扣吗
  • 印花税减半征收吗
  • 零星小额交易要交税吗
  • 法人可以自己申诉个税吗
  • 公司理财收益账务处理
  • 对方增值税发票丢失怎么办
  • 退税勾选后如何开红字
  • 员工的家庭
  • 过渡费交税吗
  • 季度利润太高怎么计算
  • 公司的汽车购置税怎么交
  • 消费税的计算公式推导过程
  • 营改增建筑业
  • 发出的货物可以要求退回吗
  • w10系统怎么连接
  • 社会保险生育险能报多少
  • 周转房维修请示
  • 收到发票未抵扣需要做账吗
  • 进程aissca.exe
  • 蓝牙有哪些功能
  • 本月销售未开票怎么做分录
  • php获取网页视频地址
  • PHP:pcntl_wstopsig()的用法_PCNTL函数
  • 违约金要计入应纳税所得额吗
  • 深度学习之GPU显存与利用率 浅析小结
  • vue3.0 vite
  • wordpress用什么语言编写
  • 医疗知识科普图片
  • 其他货币资金明细科目有哪些
  • overflow常见释义
  • 前端脚本开发
  • ps打不了字只显示一个点怎么办
  • 医院会计医保怎么做账
  • 增值税年末留底
  • 预付卡做账吗
  • 跨国公司海外子公司
  • 股东入股资金如何记账
  • 开立一般户需要法人到场吗
  • 业务招待费计入其他业务成本
  • 个人扣税是怎么扣的
  • 应收账款核算流程
  • 公司向个人借款怎么做账
  • 公允价值变动损益在利润表哪里
  • 折旧完的固定资产出售
  • 设备租金收入计什么科目
  • 工程项目前期费用包括哪些
  • 其他业务收入的附加税的会计分录
  • 什么是递延所得税?
  • sql语句大全实例教程.pdf
  • mysql5.7卸载重装
  • 数据库的行和列的叙述
  • XP系统网上邻居不见了有哪些找回方法
  • 笔记本出厂预装系统
  • 搭建技巧和方法示意图
  • 如何设置无线网密码
  • 安装ubuntu不支持nvidia显卡
  • win7如何开启蓝牙功能
  • windows移动中心有什么用
  • 固定ie浏览器
  • win7指令代码
  • uibutton设置圆角
  • javascript入门教程
  • opengl es3.0metal
  • intellij idea2021安装教程
  • cmd常用命令详解
  • Xcode6 和 Cocos2dx3.1以下版本的不兼容问题
  • 重装操作系统后无法开机
  • 如何使用css设置元素的层叠效果?
  • jquery全选和全不选效果
  • unity脚本编写教程
  • javascript怎么学
  • Android的事件处理机制是一种______机制
  • JavaScript程序设计形考任务第一次任务
  • 浙江职称评审网官网
  • 免抵退税办法不得抵扣的进项
  • 为什么企业减少注册资金的原因
  • 养猪环保局有什么新政策
  • 资源税条例实施细则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设