PHP基础语法(五)

一、定义语法

1、索引数组

2、php5.4之后简化的语法

3、关联数组

4、多维数组

$colors = array("Red", "Green", "Blue");
$colors = ["Red", "Green", "Blue"];
$person = array("name" => "John", "age" => 30, "city" => "New York");
$employees = array(array("name" => "John", "age" => 30, "job" => "Developer"),array("name" => "Jane", "age" => 25, "job" => "Designer")
);

PHP数组特点:

1、可以整数下标或者字符串下标
      若数组下标均为整数,则称为索引数组。
      若数组下标均为字符串,则称为关联数组
      混合下标的话称为混合数组
2、数组元素的顺序以放入顺序为准,与下标无关
3、数字下标的增长特性:从0开始自动增长,若中间手动加入较大的下标,则后面则会从当前最大下标+1增长。

4、特殊值下标的自动转换

<?php
// 特殊下标自动转换
$arr1[false] = false;
$arr1[true] = true;
$arr1[NULL] = NULL;
var_dump($arr1); // array(3)([0]=>bool(false),[1]=>bool(true) [""]->NULL)

5、PHP数组中类型元素没有限制。
6、PHP中数组元素没有长度限制。

补充:PHP中数组是很大的数据,故会存储在堆区。

二、遍历数组

使用 foreach 循环

foreach ($array as $value) {// 执行操作,$value 是数组 $array 中的每个元素的值
}

关联数组的遍历

$person = ["name" => "John", "age" => 30, "city" => "New York"];foreach ($person as $key => $value) {echo "$key: $value <br>";
}

输出:

name: John
age: 30
city: New York

索引数组的遍历

$colors = ["Red", "Green", "Blue"];foreach ($colors as $index => $color) {echo "Index $index: $color <br>";
}

输出:

Index 0: Red
Index 1: Green
Index 2: Blue

三、数组相关函数

a、数组排序函数

1、sort():对数组进行升序排序。键值关联性被丢弃,即键名被重置为整数索引。

$arr = [3, 1, 2];
sort($arr);
print_r($arr);  // 输出:[1, 2, 3]

2、rsort():对数组进行降序排序。键值关联性同样被丢弃。

$arr = [3, 1, 2];
rsort($arr);
print_r($arr);  // 输出:[3, 2, 1]

3、asort():按值保持索引关联性的升序排序。

$arr = ['b' => 3, 'a' => 1, 'c' => 2];
asort($arr);
print_r($arr);  // 输出:['a' => 1, 'c' => 2, 'b' => 3]

4、arsort():按值保持索引关联性的降序排序。

$arr = ['b' => 3, 'a' => 1, 'c' => 2];
arsort($arr);
print_r($arr);  // 输出:['b' => 3, 'c' => 2, 'a' => 1]

5、ksort():按键名升序排序。

$arr = ['b' => 3, 'a' => 1, 'c' => 2];
ksort($arr);
print_r($arr);  // 输出:['a' => 1, 'b' => 3, 'c' => 2]

6、krsort():按键名降序排序。

$arr = ['b' => 3, 'a' => 1, 'c' => 2];
krsort($arr);
print_r($arr);  // 输出:['c' => 2, 'b' => 3, 'a' => 1]

sort()rsort() 适用于索引数组;

asort()arsort() 适用于关联数组并保持键值关联;

ksort()krsort() 则按照键名进行排序。

print_r 函数会将变量以人类可读的方式输出到浏览器或者命令行界面。对于数组,它会显示数组的键和值,并且会自动递归地显示多维数组的内容。

shuffle() 是 PHP 中用来随机打乱数组元素顺序的函数。它会随机地重新排列数组中的元素,返回一个打乱顺序后的数组,数组下标会重排。

b、数组指针函数

  1. current():

    • 返回数组中当前指针位置的元素值。
  2. key():

    • 返回数组中当前指针位置的键名。
  3. next():

    • 将数组指针向前移动一位,并返回当前元素的值。(下一个元素的值)
  4. prev()

    • 将数组指针向后移动一位,并返回当前元素的值。(上一个元素的值)
  5. reset():

    • 将数组指针重置到第一个元素,并返回第一个元素的值。
  6. end():

    • 将数组指针指向最后一个元素,并返回最后一个元素的值。
  7. each():

    • 返回当前元素的键名和值,并将指针向前移动一位。每次调用 each() 函数会返回一个包含四个元素的数组:[0] => key, [1] => value, 'key' => key, 'value' => value]。如果已经遍历到数组末尾,则返回 false

next,prev会移动指针,可能导致超出数组,此时再使用next、prev便不能再返回数组,只
能通过end/reset。

c、其他函数

  1. count():返回数组中的元素数目。

  2. array_push():将一个或多个元素压入数组的末尾。

  3. array_pop():弹出数组的最后一个元素

  4. array_shift():将数组的第一个元素移出并返回

  5. array_unshift():在数组开头插入一个或多个元素

  6. array_reverse():返回一个翻转顺序后的数组。

  7. in_array():检查数组中是否存在指定的值。

  8. array_values():返回数组中所有的值,重新建立索引。

  9. array_reverse():返回一个翻转顺序后的数组。

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

在 PHP 中,虽然没有内置的数据结构(如堆、栈、队列等)类似于其他编程语言(如Python或Java)提供的标准库,但可以通过数组和一些自定义实现来模拟这些数据结构的行为。

1. 栈(Stack)

栈是一种后进先出(LIFO)的数据结构

2、 队列(Queue)

队列是一种先进先出(FIFO)的数据结构

  • 队列操作:使用 array_shift 和 array_unshift,在数组的开头进行添加和移除,实现先进先出的数据结构。
  • 栈操作:使用 array_push 和 array_pop,在数组的末尾进行添加和移除,实现后进先出的数据结构。

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

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

相关文章

基于PyCharm在Windows系统上远程连接Linux服务器中Docker容器进行Python项目开发与部署

文章目录 摘要项目结构项目开发项目上线参考文章 摘要 本文介绍了如何在Windows 10系统上使用PyCharm专业版2024.1&#xff0c;通过Docker容器在阿里云CentOS 7.9服务器上进行Python项目的开发和生产部署。文章详细阐述了项目结构的搭建、PyCharm的使用技巧、以及如何将开发项…

Superset二次开发之Dashboard状态变更源码解读

接口PUTapi/v1/dashboard/<dashboard_ID>前端文件 superset-frontend\src\dashboard\components\PublishedStatus\index.jsx 69行 togglePublished() togglePublished() { this.props.savePublished(this.props.dashboardId, !this.props.isPublished); } …

基于深度学习的医学影像分类

基于深度学习的医学影像分类是利用深度学习模型对医学影像&#xff08;如X光片、CT、MRI等&#xff09;进行自动分类&#xff0c;以辅助医生进行疾病诊断和治疗决策。以下是对这一领域的系统介绍&#xff1a; 1. 任务和目标 医学影像分类的主要任务和目标包括&#xff1a; 疾…

12.Spring事务和事务传播机制

文章目录 1.为什么需要事务2.Spring 中事务的实现2.1 MySQL 中的事务使⽤2.2 Spring 编程式事务2.3 Spring 声明式事务&#xff08;自动&#xff09;2.3.1 Transactional 作⽤范围2.3.2 Transactional 参数说明2.3.3 注意事项2.3.4 Transactional ⼯作原理 3.事务隔离级别3.1 事…

vue+element的table合并单元格(竖着合并行)及合计行添加并计算

1 效果: 代码分析: 1 表格头配置: 2 懒得写的:自己复制吧 <el-table:data"tableData"style"width: 98%":height"height"v-loading"isLoading"stripe"false" :span-method"objectSpanMethod"show-summary:summ…

c++ 线程

在 C 中&#xff0c;std::thread 构造函数可以用于将参数传递给线程。这里是一个基本的示例&#xff0c;展示了如何使用 std::thread 来传递参数&#xff1a; #include <iostream> #include <thread>// 定义一个被线程调用的函数 void threadFunc(int arg1, doubl…

C++多线程编程中的锁详解

在现代软件开发中&#xff0c;多线程编程是提升应用程序性能和响应能力的重要手段。然而&#xff0c;多线程编程也带来了数据竞争和死锁等复杂问题。为了确保线程间的同步和共享数据的一致性&#xff0c;C标准库提供了多种锁机制。 1. std::mutex std::mutex是最基础的互斥锁…

视图、存储过程、触发器

一、视图 视图是从一个或者几个基本表&#xff08;或视图&#xff09;导出的表。它与基 本表不同&#xff0c;是一个虚表&#xff0c;视图只能用来从查询&#xff0c;不能做增删改(虚拟的表) 1.创建视图 创建视图的语法&#xff1a; create view 视图名【view_xxx / v_xxx】 a…

深入理解MySQL锁机制与性能优化:详解记录锁、间隙锁、临键锁及慢SQL查询分析

1. 事务隔离和锁机制详解 记录锁 第一种情况,当我们对于唯一性的索引(包括唯一索引和主键索引)使用等值查询,精准匹配到一条记录的时候,这个时候使用的就是记录锁。 比如 where id = 1 4 7 10。 间隙锁 第二种情况,当我们查询的记录不存在,无论是用等值查询还是范围…

如何使用 API 查看极狐GitLab 镜像仓库中的镜像?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…

Thinkphp开发文档二次整理版

基础部分 安装 环境要求 ​ *php>7.1.0 命令下载 通过Composer进行下载&#xff0c;操作步骤下载软件 phpstudy --->点击软件管理 --->安装Composer --->再点击网站 --->点击管理 --->点击Composer --->复制如下命令代码&#xff1a; ​ 稳定版&…

国际化技术参考

一、概述 国际化就是用户可以选择对应的语言,页面展示成对应的语言; 一个系统的国际化按照信息的所在位置,可以分为三种国际化信息: 前端页面信息后端提示信息数据库的字典类信息二、前端页面国际化 使用i18n库实现国际化 i18n国际化库思路:通过jquery或者dom操作拿到需…

推荐4款简单高效的视频转文字工具。

最近我要将很多的以前的培训视频转换成笔记&#xff0c;觉得很麻烦&#xff0c;于是就搜索有没有什么工具可以帮助。结果就真的找到了很多将视频转换成文字的软件和网站。解决了一个大工程&#xff0c;后来发现其实很多人都会碰到像我这样的问题&#xff0c;于是在这里将我使用…

【前端】JavaScript入门及实战106-110

文章目录 106 a的索引问题107 使用DOM操作CSS108 读取元素当前的样式109 getStyle()110 其他样式操作的属性滚动条练习 106 a的索引问题 <!DOCTYPE html> <html> <head> <title></title> <meta charset"utf-8"> <script typ…

HR问:前端实习生简历实习筛不了,一天上百份,但是都一样,怎么办?

前两天&#xff0c;我们HR过来问&#xff1a;“前端的实习生投的实在太多了&#xff0c;一天下来就几百份了&#xff0c;怎么办&#xff1f;” 我大致看了看这些简历发现&#xff0c;这几百份的简历除了学校不同之外&#xff0c;几乎没有什么区别。 如何筛选&#xff1f; 有…

类和对象:完结

1.再深构造函数 • 之前我们实现构造函数时&#xff0c;初始化成员变量主要使⽤函数体内赋值&#xff0c;构造函数初始化还有⼀种⽅ 式&#xff0c;就是初始化列表&#xff0c;初始化列表的使⽤⽅式是以⼀个冒号开始&#xff0c;接着是⼀个以逗号分隔的数据成 员列表&#xf…

通信原理-思科实验三:无线局域网实验

实验三 无线局域网实验 一&#xff1a;无线局域网基础服务集 实验步骤&#xff1a; 进入物理工作区&#xff0c;导航选择 城市家园; 选择设备 AP0&#xff0c;并分别选择Laptop0、Laptop1放在APO范围外区域 修改笔记本的网卡&#xff0c;从以太网卡切换到无线网卡WPC300N 切…

【C#/C++】C#调C++的接口,给C++传结构体数组

C#调C的接口&#xff0c;给C传结构体数组 1、背景2、实现 1、背景 C#软件创建了一个结构体数组用来存储图像的区域信息&#xff0c;分别是矩形框的左上像素的xy坐标和矩形框右下像素的xy坐标。需要传入给调用的C函数的参数列表中&#xff0c;我们选择使用C#传入一个结构体数组…

力扣Hot100-543二叉树的直径

给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,4,5] 输出&a…

C++ 基础(类和对象下)

目录 一. 再探构造函数 1.1. 初始化列表&#xff08;尽量使用列表初始化&#xff09; 二. static成员 2.1static成员初始化 三.友元 3.1友元&#xff1a;提供了⼀种 突破类访问限定符封装的方式. 四.内部类 4.1如果⼀个类定义在另⼀个类的内部&#xff0c;这个内部类就叫…