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中数组的改进、数组函数就讲解完毕了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/68836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git bash adb push 路径问题

adb push xxx.so //sdcard/DCIM/参考 https://stackoverflow.com/questions/16344985/how-do-i-pass-an-absolute-path-to-the-adb-command-via-git-bash-for-windows

【SpringSecurity】八、集成图片验证码

文章目录 1、生成图片验证码2、创建验证码过滤器3、将过滤器加入SpringSecurity过滤链4、修改登录页 SpringSecurity是通过过滤器链来完成的,接下来的验证码,可以尝试创建一个过滤器放到Security的过滤器链中,在自定义的过滤器中比较验证码。…

90、00后严选出的数据可视化工具:奥威BI工具

90、00后主打一个巧用工具,绝不低效率上班,因此当擅长大数据智能可视化分析的BI数据可视化工具出现后,自然而然地就成了90、00后职场人常用的数据可视化工具。 奥威BI工具三大特点,让职场人眼前一亮! 1、零编程&…

医学影像工作站PACS系统源码,医院PACS系统源码

医学影像(PACS)系统主要进行病人信息和影像的获取、处理、存储、调阅、检索、管理,并通过网络向全院提供病人检查影像及诊断报告;各影像科室之间共享不同设备的病人检查影像及诊断报告;在诊断工作站上,调阅HIS中病人的其它信息&am…

A Review on Graph Neural Network Methods in Financial Applications

本文是与GNN有关的论文综述,针对《A Review on Graph Neural Network Methods in Financial Applications》的翻译。 图神经网络在金融中的应用综述 摘要1 引言2 图分类3 特征处理4 图神经网络模型5 应用6 挑战 摘要 金融数据具有多个组成部分和多个关系&#xff…

Android架构 架构和 CPU ABI - NDK

查看设备架构 adb -s emulator-5554 shell getprop ro.product.cpu.abi C:\Users\liyd>adb -s emulator-5554 shell getprop ro.product.cpu.abi x86_64C:\Users\liyd>adb -s 804c11f1 shell getprop ro.product.cpu.abi arm64-v8amumu模拟器12 C:\Users\liyd>adb …

VB合同管理系统设计与实现

摘 要 在21世纪,随着计算机科学的发展,数据库技术在人们日常工作中的应用越来越广泛,为广大用户提供了更加周到和人性化的服务。数据库技术已逐渐成为当今计算机应用的潮流。本文主要是通过制作一款数据库软件—即“合同管理系统”来介绍数据库技术在人们日常生活和工作…

ElasticSearch入门

一、基本命令_cat 1、查看节点信息 http://192.168.101.132:9200/_cat/nodes2、查看健康状况 http://192.168.101.132:9200/_cat/health3、查看主节点的信息 http://192.168.101.132:9200/_cat/master4、查看所有索引 http://192.168.101.132:9200/_cat/indices二、索引一…

【算法与数据结构】700、LeetCode二叉搜索树中的搜索

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;二叉搜索树的性质&#xff1a;左节点键值 < 中间节点键值 < 右节点键值。那么我们根据此性质&am…

软件测试/测试开发丨Selenium 网页frame与多窗口处理

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/27048 一、多窗口处理. 1.1、多窗口简介 点击某些链接&#xff0c;会重新打开⼀个窗⼜&#xff0c;对于这种情况&#xff0c;想在新页⾯上操作&#xff0…

流媒体服务器与视频服务器有什么区别?

流媒体服务器与视频服务器有什么区别&#xff1f; 流媒体服务器用在远程教育&#xff0c;视频点播、网络电台、网络视频等方面。 直播过程中就需要使用流媒体服务器&#xff0c;一个完整的直播过程&#xff0c;包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放…

2023-09-02 LeetCode每日一题(最多可以摧毁的敌人城堡数目)

2023-09-02每日一题 一、题目编号 2511. 最多可以摧毁的敌人城堡数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n &#xff0c;下标从 0 开始的整数数组 forts &#xff0c;表示一些城堡。forts[i] 可以是 -1 &#xff0c;0 或者 1 &#xff0c;其中&…

Burp插件HaE与Authz用法

HaE与Authz均为BurpSuite插件生态的一员&#xff0c;两者搭配可以避免“越权”、“未授权”两类漏洞的重复测试行为。&#xff08;适用于业务繁杂&#xff0c;系统模块功能多的场景&#xff09; 两个插件都可以在store里安装 安装完后&#xff0c;点击Filter Settings勾选Sho…

第64步 深度学习图像识别:多分类建模误判病例分析(Pytorch)

基于WIN10的64位系统演示 一、写在前面 上期我们基于TensorFlow环境介绍了多分类建模的误判病例分析。 本期以健康组、肺结核组、COVID-19组、细菌性&#xff08;病毒性&#xff09;肺炎组为数据集&#xff0c;基于Pytorch环境&#xff0c;构建SqueezeNet多分类模型&#xf…

业务需要咨询?开发遇到 bug 想反馈?开发者在线提单功能上线!

大家是否遇到过下列问题—— 在开发的时候&#xff0c;遇到 bug 需要反馈… 有合作意向的时候&#xff0c;想更多了解业务和相关产品… 在接入的时候&#xff0c;需要得到专业技术支持… 别急&#xff0c;荣耀开发者服务平台在线提单功能上线了~ 处理问题分类说明&#xff1…

C语言---位域(位段)

位域&#xff08;位段&#xff09; 1、位域定义&#xff1a; 有些数据在存储时并不需要占用一个完整的字节&#xff0c;只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态&#xff0c;用 0 和 1 表示足以&#xff0c;也就是用一个二进位。正是基于这种考虑&…

xxl-job快速使用

目录 官方文档 具体操作一下 为什么从github上拉取项目后这些包的颜色都没有变呢?

Mongoose populate实现多表关联存储与查询

使用Mongoose populate实现多表关联与查询 mongodb不是传统的关系型数据库&#xff0c;我们可以使用monogoose方便的将多个表关联起来&#xff0c;实现一对多、多对多的数据表存储和查询功能。 本文已最常见的一对多关系模型&#xff0c;介绍简单的数据模型定义、存储、查询。 …

MIT6.S081实验环境搭建

MIT6.S081 lab 环境搭建 本文参考了MIT的官方指南和知乎文章环境搭建 step1 首先需要一个ubuntu20.04的系统&#xff0c;我使用的是vscode的WSL2连接的ubuntu20.04&#xff0c;使用virtual box建一个ubuntu20.04的虚拟机应该也可以。 可以用 lsb_release -a 查看一下自己ub…

Java stream求和以及mapToDouble sum精度丢失解决办法

在 Java 8 中&#xff0c;Stream.reduce()合并流的元素并产生单个值。 基本数据类型 和 包装类型 的一位数组求和 package test day1;import java.util.Arrays;public class Test {public static void main(String[] args) {// 基本数据类型 int long doubleint[] arr2 ne…