数组的基本使用
初识数组
数组类型属于数据类型中的复合类型,用于存储大批量数据。
在 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));
示例效果:
