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));

示例效果:


相关推荐
ServBay1 天前
告别面条代码,PSL 5.0 重构 PHP 性能与安全天花板
后端·php
JaguarJack4 天前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo4 天前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack5 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo5 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack5 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay6 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954487 天前
CTF 伪协议
php
BingoGo9 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack9 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端