当前位置: 首页 > news >正文

PHP8的数组-PHP8知识详解

今天开始学习数组, 本文主要讲了三点:什么是数组、php8中数组的改进、数组函数。

一、什么是数组

在PHP8中,数组是非常重要的数据类型。相对于其他的数据类型,数组更像一种结构,而这种结构可以储存一系列数值。

数组中的数值被称为数组元素。每一个元素都有对应的标识,也称为键或者下标。通过这个键可以访问数组元素。数组的键可以是数字,也可以是字符串。

数组是对大量数据进行有效组织和管理的手段之一,通过数组的强大功能,可以对大量性质相同的数据进行存储、排序、插入及删除等操作,从而可以有效的提高程序开发效率及改善程序的编写方式。PHP为程序开发人员提供了大量的数组操作函数。

数组,本质上就是一系列数据的组合。在这个组合中,每一个数据都是独立的,可以对每一个单独的数据进行分配和读取,然而这一系列数据是同一种类型的,不能是不同类型。

举例,我们把学校的学生定义为一个数组,学号是键,姓名就是值:

建: 001   002    003   004   005  ……

值:小华  小红  小军  小梅  小明 ……

Image

二、PHP8中数组的改进

PHP 8.0 引入了一些有趣的新特性和改进,包括数组方面的一些改进。以下是 PHP 8.0 中关于数组的一些重要变化:

1、JIT 改进:

PHP 8.0 引入了 JIT 编译器,这对数组操作有一些性能提升。这意味着在某些情况下,PHP 8.0 可能会更快地执行数组操作。

2、类型注解和更严格的类型检查:

PHP 8.0 支持数组类型的强类型注解,可以在函数参数、返回值和类属性上使用。这有助于更好地指定期望的数据类型,从而提高代码的类型安全性。

3、新的 array union 运算符:

PHP 8.0 引入了 array union 运算符(|),它允许将两个数组合并为一个新数组,同时去除重复的值。这是一个更简洁和直观的方式来合并数组,而不需要使用 array_merge() 或其他方法。

4、新的 nullsafe 运算符:

PHP 8.0 引入了 nullsafe 运算符(?->),它可以更容易地处理数组中可能为 null 的值,而不需要显式检查和处理每个可能为空的变量。

5、match 表达式对数组的支持:

PHP 8.0 中的 match 表达式可以用来根据数组的值进行匹配操作,从而更方便地执行条件逻辑。

三、数组函数:

PHP 8提供了许多用于操作和处理数组的函数,例如:

array_push():向数组末尾添加一个或多个元素。

array_pop():从数组末尾取出并返回最后一个元素。

array_merge():合并一个或多个数组。

array_slice():从数组中取出一段。

array_search():在数组中搜索给定的值并返回键名。

in_array():检查数组中是否存在某个值。

array_keys():返回数组中所有的键名。

array_values():返回数组中所有的值。

array_count_values():统计数组中每个元素出现的次数。

array_diff():返回数组之间的差异。

array_intersect():返回数组的交集。

array_unique():删除数组中的重复元素。

array_column():从二维数组中返回指定列的值。

array_combine():将一个数组的值作为键名,另一个数组的值作为键值,合并为一个新数组。

array_reverse():反转数组的顺序。

array_chunk():将数组分割为新的数组块。

array_walk():对数组中的每个元素应用用户自定义函数。

array_map():对数组的每个元素应用回调函数。

array_merge_recursive():递归合并多个数组合并后的新数组。

array_replace():使用回调函数替换数组合并后的新数组。

array_diff_uassoc():比较两个或多个数组,并返回差集,使用用户自定义键比较。

array_udiff_assoc():比较两个或多个数组,并返回差集,使用用户自定义键比较,且忽略键名。

array_udiff():比较两个或多个数组,并返回差集,使用用户自定义函数比较。

array_uintersect():比较两个或多个数组,并返回交集,使用用户自定义函数比较。

array_intersect_uassoc():比较两个或多个数组,并返回交集,使用用户自定义键比较。

array_intersect_assoc():比较两个或多个数组,并返回交集,使用键名比较。

array_diff_uassoc():比较两个或多个数组,并返回差集,使用用户自定义键比较,且忽略键名。

array_udiff():比较两个或多个数组,并返回差集,使用用户自定义函数比较。

array_uintersect():比较两个或多个数组,并返回交集,使用用户自定义函数比较。

array_intersect_uassoc():比较两个或多个数组,并返回交集,使用用户自定义键比较。

array_intersect_assoc():比较两个或多个数组,并返回交集,使用键名比较。

到此为止,本文学习的什么是数组、PHP8中数组的改进、数组函数就讲解完毕了。

相关文章:

PHP8的数组-PHP8知识详解

今天开始学习数组, 本文主要讲了三点:什么是数组、php8中数组的改进、数组函数。 一、什么是数组 在PHP8中,数组是非常重要的数据类型。相对于其他的数据类型,数组更像一种结构,而这种结构可以储存一系列数值。 数组…...

数据仓库_维度表的两大分类

最近看一篇文章对维度表进行了分类,记录一下。 维度表主要分为两类高基数维度表和低基数维度表。 高基数维度数据 一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。 低基数维度数据 一般是配置表,比如枚举值对应的中文含…...

4、DVWA——文件包含

文章目录 一、文件包含概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 五、impossible 一、文件包含概述 文件包含是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(i…...

产品经理如何进行需求管理

产品经理在进行需求管理时,可以遵循以下步骤: 1. 确定需求目标:明确产品的愿景和目标,确定需求管理的方向和重点。 2. 收集需求:与利益相关者(包括用户、业务部门、技术团队等)沟通,…...

【从0学习Solidity】2. 值类型详解

Solidity极简入门: 2. 值类型 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发…...

框架分析(9)-Hibernate

框架分析(9)-Hibernate 专栏介绍Hibernate特性对象关系映射(ORM)数据库连接和事务管理查询语言(HQL)缓存机制透明的持久化操作对象的延迟加载事务管理 优缺点优点简化数据库操作跨数据库平台高度可定制性缓…...

JavaScript中的原型链(prototype chain)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ JavaScript中的原型链⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏…...

设计模式之代理模式与外观模式

目录 代理模式 简介 优缺点 角色职责 实现 运用场景 外观模式 简介 角色职责 优缺点 实现 使用场景 代理模式 简介 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为…...

动手学深度学习(四)多层感知机

目录 一、多层感知机的从零开始实现 1.1 初始化模型参数 1.2 实现Relu函数 1.3 实现模型 1.4 训练 二、多层感知机的简洁实现 2.1 实现模型 2.2 训练 三、模型选择 3.1 训练误差和泛化误差 3.2 验证数据集和测试数据集 3.3 过拟合和欠拟合 3.4 代码实现 3.4.1 生…...

融云出海:社交泛娱乐出海,「从 0 到 1」最全攻略

9 月 21 日,融云直播课社交泛娱乐出海最短变现路径如何快速实现一款 1V1 视频社交应用? 欢迎点击上方小程序报名~ 本期我们翻到《地图》的实践篇,从赛道/品类选择、目标地区适配、用户增长、变现模式、本地化运营、跨国团队管理等方面完整描绘…...

生成式人工智能促使社会转变

作者:JEFF VESTAL 了解 Elastic 如何处于大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中,帮助用户将 LLM 提升到新的高度。 iPhone 社会转变:新时代的黎明 曾几何时,不久前…...

【STM32】SPI初步使用 读写FLASH W25Q64

硬件连接 (1) SS( Slave Select):从设备选择信号线,常称为片选信号线,每个从设备都有独立的这一条 NSS 信号线,当主机要选择从设备时,把该从设备的 NSS 信号线设置为低电平,该从设备即被选中,即…...

javaScript:DOM(父子/兄弟)常用属性

目录 前言 一.父子关系 父子关系的常用属性 childNodes 获取所有的子节点 children 获取所有的子元素(dom元素) firstChild 获取元素的第一个子节点,相当于 childNodes[0] firstElementChild 获取元素的第一个元素 相当于 children[0]…...

笔记:linux中LED(GPIO)驱动设备树配置和用法

设备树中节点配置 设备树中的LED驱动一般是这样写&#xff0c;LED驱动可以控制GPIO的电平变化&#xff0c;生成文件节点很方便 leds: leds {compatible "gpio-leds";gpio_demo: gpio_demo {label "gpio_demo";gpios <&gpio0 RK_PC0 GPIO_ACTIV…...

能耗管理+分区温控成为开发节能、省电神器的关键!从此告别电费刺客时代

取暖器在人们脑海中最深刻的印象&#xff0c;就是费电&#xff01;而它耗电量大的原因&#xff0c;主要在于它是靠电能直接转化为热能&#xff1a;在取暖设备通电后&#xff0c;内部高电阻的电热丝发热&#xff0c;风机会将这股热量吹散到室内&#xff0c;从而达到全屋取暖的效…...

垃圾回收 - 复制算法

GC复制算法是Marvin L.Minsky在1963年研究出来的算法。说简单点&#xff0c;就是只把某个空间的活动对象复制到其它空间&#xff0c;把原空间里的所有对象都回收掉。这是一个大胆的想法。在此&#xff0c;我们将复制活动对象的原空间称为From空间&#xff0c;将粘贴活动对象的新…...

基于SpringMVC实现常见功能

基于SpringMVC实现常见功能 防止XSS攻击 XSS攻击全称跨站脚本攻击&#xff0c;是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;故将跨站脚本攻击缩写为XSS&#xff0c;XSS是一种在web应用中的计算机安全漏洞&#xff0c;它允许恶意web用户将代码植入到…...

MetInfo5.0文件包含漏洞

MetInfo历史版本与文件 环境在这里下载&#xff0c;使用phpstudy搭建 我们来看到这个index.php&#xff0c;如下图所示&#xff0c;其中定义了fmodule变量与module变量&#xff0c;其中require_once语句表示将某个文件引入当前文件&#xff0c;在这个代码中&#xff0c;通过r…...

【SpringBoot】SpringBoot实现基本的区块链的步骤与代码

以下是Spring Boot实现基本的区块链代码的步骤&#xff1a; 创建一个Block类&#xff0c;它表示一个区块&#xff0c;包含一个区块头和一个区块体。区块头包括版本号、时间戳、前一个区块的哈希值和当前区块的哈希值。区块体包含交易数据。 创建一个Blockchain类&#xff0c;它…...

Photoscan/Metashape 2.0.0中的地面激光扫描处理

在Metashape(原Photoscan)2.0.0, 结构化地面激光扫描和非结构化航空激光扫描都可以使用导入点云&#xff08;文件>导入>导入点云&#xff09;命令导入。导入时会保留所有点属性&#xff08;包括结构化信息&#xff09;。 本文讨论以下主题 如何将激光扫描数据导入项目&am…...

2026网站制作公司到底哪家好?国内主流PC网站建设服务公司排名

2026年1月&#xff0c;最新修订的《网络安全法》正式施行&#xff0c;叠加《网络数据安全管理条例》《个人信息保护法》细则落地&#xff0c;数据合规已成为网站建设的前置准入门槛。据中国互联网协会数据显示&#xff0c;2025年国内中大型企业官网合规整改率仅41.7%&#xff0…...

如何让10美元鼠标超越苹果触控板:Mac Mouse Fix终极指南

如何让10美元鼠标超越苹果触控板&#xff1a;Mac Mouse Fix终极指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾经为macOS对第三方…...

个人博客域名迁移说明 www.xiaoming.io

因为之前很多文章和插图都链接到了个人博客&#xff0c;一些读者评论和私信反馈链接有问题&#xff0c;图片不显示&#xff0c;这里特地说明如下&#xff1a;个人博客域名从原先的 www.hainter.com 改成了 www.xiaoming.io。例如文章中有链接 http://www.hainter.com/books 不能…...

FRCRN语音降噪工具实战教程:单麦16k音频一键去噪保姆级指南

FRCRN语音降噪工具实战教程&#xff1a;单麦16k音频一键去噪保姆级指南 1. 快速了解FRCRN语音降噪 你是不是经常遇到这样的困扰&#xff1a;录制的语音通话背景噪音太大&#xff0c;播客内容被环境声干扰&#xff0c;或者重要的会议录音听不清楚人声&#xff1f;FRCRN语音降噪…...

城通网盘下载速度慢?试试ctfileGet,让你畅享本地高速解析体验

城通网盘下载速度慢&#xff1f;试试ctfileGet&#xff0c;让你畅享本地高速解析体验 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 在数字化办公与学习中&#xff0c;网盘已成为文件传输的重要工具。…...

双通道并用:OpenClaw同时接入gemma-3-12b-it与本地知识库

双通道并用&#xff1a;OpenClaw同时接入gemma-3-12b-it与本地知识库 1. 为什么需要混合架构 在个人自动化场景中&#xff0c;我发现纯粹依赖大模型存在两个痛点&#xff1a;一是高频重复问题消耗大量Token&#xff0c;二是模型对专业领域知识的掌握有限。上个月整理技术文档…...

谷歌 Gemma 4 部署指南

谷歌 Gemma 4 部署指南 Gemma 4 是 Google DeepMind 于 2026 年 4 月 2 日发布的最新开放权重模型系列,采用 Apache 2.0 许可协议,支持商业用途。该系列模型提供 E2B、E4B、26B A4B(MoE 架构)及 31B(密集架构)四种变体,适用于从移动设备、边缘计算到服务器和工作站的广…...

WSL2中部署Graphormer:解决Ubuntu环境配置与依赖安装难题

WSL2中部署Graphormer&#xff1a;解决Ubuntu环境配置与依赖安装难题 1. 引言 作为一名Windows开发者&#xff0c;你是否遇到过这样的困境&#xff1a;需要运行Linux环境下的深度学习项目&#xff0c;却不想折腾双系统或虚拟机&#xff1f;WSL2&#xff08;Windows Subsystem…...

@electron/asar 源码解读:Filesystem类的设计与实现

electron/asar 源码解读&#xff1a;Filesystem类的设计与实现 【免费下载链接】asar Simple extensive tar-like archive format with indexing 项目地址: https://gitcode.com/gh_mirrors/as/asar 在Electron应用开发中&#xff0c;文件打包和管理是至关重要的环节。作…...

Anaconda 虚拟环境创建后,切换Python 版本

Anaconda 虚拟环境创建后&#xff0c;Python 版本可以更换&#xff01;完全不用删除重建环境&#xff0c;一行命令就能直接修改 / 切换 Python 版本&#xff0c;非常方便。一、切换 Python 版本的命令先激活你的虚拟环境&#xff0c;再执行升级 / 降级命令&#xff1a;1. 先激活…...