PHP数组函数:多维数组操作、数组排序、数组遍历、合并和分割
在 PHP 中,数组是一个非常重要的数据类型,常用于存储一组相关数据。由于 PHP 的数组非常灵活,支持多维数组,它们的操作也非常多样。
本文将介绍 PHP 中的数组函数分为多维数组操作、数组排序、数组遍历、合并和分割共 5 大类,主要内容包括:
1. 多维数组操作
1. 多维数组的创建和访问
2. 多维数组的遍历
3. 多维数组的排序
2. 数组排序
1. sort() 和 rsort()
2. asort() 和 arsort()
3. ksort() 和 krsort()
4. usort() 和 uasort()
3. 数组遍历
1. for 循环
2. foreach 循环
3. while 循环
4. 合并和分割数组
1. array_merge()
2. array_merge_recursive()
3. array_combine()
4. array_slice()
## 1. 多维数组操作
### 1.1 多维数组的创建和访问
PHP 的数组可以包含其他数组,这些数组就构成了多维数组。创建多维数组的方式非常简单,只需要在原有数组中嵌套一个或多个数组即可。
// 创建二维数组
$users = [
['name' => '张三', 'age' => 20],
['name' => '李四', 'age' => 30],
['name' => '王五', 'age' => 40]
];
// 创建三维数组
$students = [
[
['name' => '小明', 'age' => 15],
['name' => '小红', 'age' => 14]
],
[
['name' => '小李', 'age' => 16],
['name' => '小张', 'age' => 15]
]
];
// 访问多维数组中的元素
echo $users[0]['name']; // 输出:张三
echo $students[1][0]['name']; // 输出:小李
### 1.2 多维数组的遍历
PHP 中遍历多维数组的过程非常简单,只需要嵌套多个 foreach 循环即可。如下代码中,我们通过两个嵌套的 foreach 循环遍历了二维数组 $users 中的每一个子数组,获取了里面的元素。
foreach ($users as $user) {
foreach ($user as $key => $value) {
echo "{$key}: {$value}
";
}
echo "
";
}
输出结果如下:
name: 张三 age: 20 name: 李四 age: 30 name: 王五 age: 40
### 1.3 多维数组的排序
多维数组的排序和一维数组的排序类似,只需要指定排序的字段即可。下面介绍四种常用的方法:
1. array_multisort() 函数:可以对多个数组或多维数组进行排序,支持按照指定维度的键名或键值进行排序。
$users = [
['name' => '张三', 'age' => 20],
['name' => '李四', 'age' => 30],
['name' => '王五', 'age' => 40]
];
// 按照年龄升序排列
$ages = array_column($users, 'age'); // 获取每个用户的年龄
array_multisort($ages, SORT_ASC, $users);
print_r($users);
输出结果如下:
Array
(
[0] => Array
(
[name] => 张三
[age] => 20
)
[1] => Array
(
[name] => 李四
[age] => 30
)
[2] => Array
(
[name] => 王五
[age] => 40
)
)
2. usort() 函数:可以按照指定的排序回调函数对数组进行排序,支持多维数组排序。
$students = [
['name' => '小明', 'score' => 80],
['name' => '小红', 'score' => 70],
['name' => '小李', 'score' => 90]
];
// 按照分数降序排列
usort($students, function ($a, $b) {
return $b['score'] - $a['score'];
});
print_r($students);
输出结果如下:
Array
(
[0] => Array
(
[name] => 小李
[score] => 90
)
[1] => Array
(
[name] => 小明
[score] => 80
)
[2] => Array
(
[name] => 小红
[score] => 70
)
)
3. ksort() 函数:按照数组键名对数组进行排序,支持多维数组排序。
$students = [
'B' => ['name' => '小明', 'score' => 80],
'A' => ['name' => '小红', 'score' => 70],
'C' => ['name' => '小李', 'score' => 90]
];
// 按照键名升序排列
ksort($students);
print_r($students);
输出结果如下:
Array
(
[A] => Array
(
[name] => 小红
[score] => 70
)
[B] => Array
(
[name] => 小明
[score] => 80
)
[C] => Array
(
[name] => 小李
[score] => 90
)
)
4. uasort() 函数:按照指定的关联比较函数对数组进行排序,支持多维数组排序。
$students = [
'B' => ['name' => '小明', 'score' => 80],
'A' => ['name' => '小红', 'score' => 70],
'C' => ['name' => '小李', 'score' => 90]
];
// 按照分数降序排列
uasort($students, function ($a, $b) {
return $b['score'] - $a['score'];
});
print_r($students);
输出结果如下:
Array
(
[C] => Array
(
[name] => 小李
[score] => 90
)
[B] => Array
(
[name] => 小明
[score] => 80
)
[A] => Array
(
[name] => 小红
[score] => 70
)
)
## 2. 数组排序
数组排序是 PHP 数组操作中的一个重要部分,可以对数组元素按照指定的顺序排序,包括升序、降序等。常用的数组排序函数包括:sort() 和 rsort()、asort() 和 arsort()、ksort() 和 krsort()、usort() 和 uasort() 四大类。
### 2.1 sort() 和 rsort()
sort() 和 rsort() 分别表示数组升序和降序排序,两者的 区别是多了一个 r 代表 reverse(反转),表示降序排列。
`php
// 升序排列
$arr = [5, 3, 6, 1, 4, 2];
