PHP 基础案例教程之 04-数组

数组的基本使用

初识数组

数组类型属于数据类型中的复合类型,用于存储大批量数据。

在 PHP 中,数组分为索引数组和关联数组。

索引数组即键的数据类型为整型的数组,默认情况下,索引数组的键从 0 开始,依次递增。

关联数组即键的数据类型为字符串型的数组,通常情况下,关联数组的键和值之间有一定的业务逻辑关系,经常使用关联数组来存储具有逻辑关系的变量。

定义数组

在 PHP 中,可以通过 array 结构法、赋值法、短数组定义法来定义数组。

array 结构法定义数组的基本用法:

PHP 复制代码
// 定义索引数组
$数组 = array("值", "值", "...");

// 定义关联数组
$数组 = array("键" => "值", "键" => "值", ...);

// 定义混合数组
$数组 = array("值", "值", "键" => "值", "键" => "值", ...);

// 定义二维数组
$数组 = array(
	"键" => array(...),
	...
);

赋值法定义数组的基本用法:

PHP 复制代码
$数组[] = "值";

$数组[键] = "值";

短数组定义法定义数组的基本用法:

PHP 复制代码
$数组 = ["值", "值", "..."];

$数组 = array("键" => "值", "键" => "值", ...);

访问数组

在 PHP 中,可以通过键访问数组。

访问数组的基本用法:

PHP 复制代码
$数组[键];

使用 isset 函数可以判断变量或数组元素是否存在。

isset 函数的基本用法:

PHP 复制代码
isset($array[$key]);

示例:访问数组

入口页面(index.php):

PHP 复制代码
<?php
$user = [
    "name" => "John",
    "age" => 30,
    "city" => "XiaMen"
];

print_r("数组中是否存在name:");
var_dump(isset($user["name"]));
print_r("<br>");
print_r("数组中是否存在sex:");
var_dump(isset($user["sex"]));

示例效果:


遍历数组

在 PHP 中,通常使用 foreach 语句遍历数组。

foreach 语句遍历数组的基本用法:

PHP 复制代码
foreach($数组 as $键 => $值) {
	// ...
}

示例:遍历数组

入口页面(index.php):

PHP 复制代码
<?php
$user = [
    "name" => "John",
    "age" => 30,
    "city" => "XiaMen"
];

foreach ($user as $key => $value) {
    echo "$key: $value<br>";
}

示例效果:


删除数组元素

在 PHP 中,unset 函数可以删除数组中的元素。

索引数组元素被删除后,数组中的数字键名不会自动填补空缺的数字。

unset 函数的基本用法:

PHP 复制代码
unset($array[$key]);

示例:删除数组元素

入口页面(index.php):

PHP 复制代码
<?php
$user = [
    "name" => "John",
    "age" => 30,
    "city" => "XiaMen"
];

print_r("删除元素前的数组:");
var_dump($user);

unset($user["age"]);

print_r("<br>删除元素后的数组:");
var_dump($user);

示例效果:


数组运算符

PHP 提供了数组运算符对数组进行运算。

PHP 的基本数组运算符:

名称 描述
+ 联合,a+a+a+b 即 a 和 b 的联合
== 相等,a == b 即 a 和 b 有相同的键值对,则为 true
=== 全等,a === b 即 a 和 b 有相同的键值对,且顺序和类型都相同,则为 true
!= 不等,a != b 即 a 不等于 b,则为 true
<> 不等,a != b 即 a 不等于 b,则为 true
!== 不全等,a != b 即 a 不全等于 b,则为 true

示例:数组运算符

入口页面(index.php):

PHP 复制代码
<?php
$num = [1, 2];
$str = ["a", "b", "c"];

$temp = $num + $str;
print_r("数组联合的结果:");
var_dump($temp);

示例效果:


常用的数组函数

指针操作函数

数组指针用于指向数组中的某个元素,默认指向数组的第 1 个元素,通过移动或改变指针的位置,可以访问数组中的任意元素。

指针操作的基本函数:

名称 描述
key($array) 获取当前指针指向数组元素的键
current($array) 获取当前指针指向数组元素的值
next($array) 将数组中的指针向后移动一位
prev($array) 将数组中的指针向前移动一位
end($array) 将数组的指针指向最后一个数组元素
reset($array) 将数组的指针指向第一个数组元素

示例:指针操作函数

入口页面(index.php):

PHP 复制代码
<?php
$array = ["a", "b", "c", "d"];

print_r("当前指针所在的键是:".key($array).",所在的值是:".current($array));
print_r("<br>");

next($array);
print_r("指针向后移动,当前指针所在的键是:".key($array).",所在的值是:".current($array));
print_r("<br>");

end($array);
print_r("指针移动到最后,当前指针所在的键是:".key($array).",所在的值是:".current($array));
print_r("<br>");

prev($array);
print_r("指针向前移动,当前指针所在的键是:".key($array).",所在的值是:".current($array));
print_r("<br>");

reset($array);
print_r("指针移动到最前,当前指针所在的键是:".key($array).",所在的值是:".current($array));

示例效果:


元素操作函数

PHP 提供了一些针对数组元素的操作函数。

元素操作的基本函数:

名称 描述
array_shift($array) 删除数组开头的元素
array_pop($array) 删除数组末尾的元素
array_unshift(array, value1, ...) 在数组开头添加元素
array_push(array, value1, ...) 在数组末尾添加元素
array_unique($array) 去除数组中重复的值
array_slice(array, start, $length) 从数组中截取出部分数组
array_splice(array1, start, length, array2) 去掉数组中的一部分元素,并用其他值代替

示例:元素操作函数

入口页面(index.php):

PHP 复制代码
<?php
$array = ["a", "b", "c", "d"];

print_r("当前数组:");
var_dump($array);
print_r("<br>");

array_shift($array);
print_r("删除数组开头的元素后的结果:");
var_dump($array);
print_r("<br>");

array_pop($array);
print_r("删除数组结尾的元素后的结果:");
var_dump($array);
print_r("<br>");

array_unshift($array, "e");
print_r("在数组开头添加元素后的结果:");
var_dump($array);
print_r("<br>");

array_push($array, "f");
print_r("在数组结尾添加元素后的结果:");
var_dump($array);

示例效果:


数组排序函数

PHP 内置了数组排序函数,可以很方便地实现对数组的排序。

数组排序的基本函数:

名称 描述
sort($array) 对数组进行升序排序
rsort($array) 对数组进行降序排序
ksort($array) 对数组按照键名升序排序
krsort($array) 对数组按照键名降序排序
asort($array) 对关联数组按照键值进行升序排序
arsort($array) 对关联数组按照键值进行倒序排序
shuffle($array) 将数组打乱
array_reverse($array) 以相反的顺序返回数组

示例:数组排序函数

入口页面(index.php):

PHP 复制代码
<?php
$array = ["c", "b", "d", "a"];

print_r("当前数组:");
var_dump($array);
print_r("<br>");

sort($array);
print_r("数组升序排序后的结果:");
var_dump($array);
print_r("<br>");

rsort($array);
print_r("数组降序排序后的结果:");
var_dump($array);
print_r("<br>");

shuffle($array);
print_r("数组打乱后的结果:");
var_dump($array);

示例效果:


数组检索函数

PHP 内置了数组检索函数,可以很方便地对数组中的元素进行查找。

数组检索的基本函数:

名称 描述
in_array(value, array) 检查数组中是否存在指定的值
array_search(value, array) 搜索数组中给定的值并返回键名
array_key_exists(key, array) 检查指定的键名是否存在于数组中

示例:数组检索函数

入口页面(index.php):

PHP 复制代码
<?php
$array = ["c", "b", "d", "a"];

print_r("数组中是否存在元素b:");
var_dump(in_array("b", $array));
print_r("<br>");

print_r("数组中元素c的键名是:");
var_dump(array_search("c", $array));
print_r("<br>");

print_r("数组中是否存在键名为9的元素:");
var_dump(array_key_exists("9", $array));

示例效果:


其他数组函数

PHP 提供了很多其他常用的数组函数。

数组的其他基本函数:

名称 描述
count($array) 计算数组中元素的个数
range(min, max, $step) 创建包含指定范围单元的数组
array_keys($array) 返回数组中所有的键名
array_values($array) 返回数组中所有的值
array_rand(array, num) 返回数组中一个或多个随机的键
array_merge(array1, array2, ...) 把一个或多个数组合并为一个数组
array_chunk(array, size) 把一个数组分割为新的数组块
array_sum($array) 返回数组中值的和
array_replace(array1, array2, ...) 使用后面数组的值替换第一个数组的值

示例:其他数组函数

入口页面(index.php):

PHP 复制代码
<?php
$array = ["c", "b", "d", "a"];

print_r("数组中的元素个数:".count($array));
print_r("<br>");

print_r("数组中所有的键名:");
var_dump(array_keys($array));
print_r("<br>");

print_r("数组中所有的值:");
var_dump(array_values($array));

示例效果:


相关推荐
两个人的幸福9 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820712 天前
PHP 扩展——从入门到理解
php
鹏仔先生12 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下13 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip13 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒13 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25013 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis13 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel