位置: 编程技术 - 正文

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

  • 残保金季报要填上年职工人数
  • 办理税务登记需要法人身份证原件吗
  • 教育培训行业税负率是多少
  • 公司成立之初做哪些
  • 施工劳务企业要交增值税吗
  • 应交增值税账面和申报表不符
  • 现金日记账1月怎么算
  • 三栏式明细账月结
  • 公司转让会计分录
  • 销售废旧物资增值税新政策
  • 不收汇样品的会计分录
  • 销售返利的税务政策
  • 一般纳税人增值税申报操作流程
  • 工程结算与工程施工
  • 钢化玻璃税率是多少?
  • 一般纳税人出租不动产增值税税率
  • 公司购买宿舍楼申请书
  • 免税销售额对应的进项税额
  • 小程序交易需要什么条件
  • 销项税现金流量表在附表中如何列示
  • 如何阻止windows10升级到11
  • steam打开速度
  • 如何彻底清洁
  • 苹果macmimi
  • mac u盘
  • 商贸公司商品品种规格多如何核算
  • 查补以前年度税款账务处理
  • 计提坏账准备的方法
  • 银行本票结算的特点是什么
  • 交易性金融资产属于流动资产
  • OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “C:\ProgramData\Anaconda3\lib\site-packages\to
  • 出口零退税率商品目录
  • symfony框架的特点
  • js如何实现异步编程
  • 法定盈余公积使用于什么
  • css 入门
  • 重分类调整分录汇总表什么情况填写
  • 季末资产总额怎么计算出来的
  • 固定资产可收回金额怎么算
  • 关于DEDECMS移动data后网站地图无法生成的解决方法
  • 工地装饰工程包括哪些
  • 销售旧货的增值税是销项税吗
  • sql server删除表命令
  • sqlserver2019删除
  • 发票冲红视频教程
  • 什么是叫资产负债表项目
  • 分公司计提递延所得税吗
  • 所得税减免的会计科目
  • 电商刷单返现如何做账务处理合适?
  • 建造合同信息表
  • 借款收回的会计科目
  • 计件工资怎么算公式
  • 加计扣除是什么时候申报
  • 增值税专用发票查询系统官方网站
  • 购买农产品进行销售要交税吗
  • 新单位建账怎么做
  • 劳务分包企业收入怎么算
  • 利润分配的借方表示增加还是减少
  • 记账凭证的基本要素包括哪些
  • mysql中使用instr进行模糊查询方法介绍
  • 如何清除sql2008r2日志
  • mysql迁移方案
  • xp系统鼠标设置在哪
  • Windows计划任务 不管是否登录 没有窗口
  • mac视频预览图不显示
  • mac怎么自定义桌面图标
  • linux 常见
  • linux修改ipv6地址
  • 安装win8.1一直卡着不动
  • linux在服务器领域的应用状况
  • tensorflowoom
  • opengl视角跟随鼠标方向移动
  • unity2020怎么导入资源
  • javascript截图找图
  • javascript闭包运行原理
  • 残疾人个税减免6000元
  • 龙华区有几个地方
  • 辽宁省国家税务总局
  • 租房交税是房东交还是中介交
  • 太原市地税局各分局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设