14 数组之数组的常用函数
在上一章中,我们详细讨论了 PHP 中的索引数组和关联数组的概念与应用。本章将继续探索数组的复杂性,着重介绍“数组之数组”的概念,即嵌套数组,并讨论一些常用的操作函数。这种结构在实际应用中极为常见,例如为数据存储和管理提供了更大的灵活性。
什么是数组之数组?
在 PHP 中,数组可以作为数组的元素。这种数据结构称为“数组之数组”或嵌套数组。例如,考虑一个存储学生信息的数组,其中每个学生也是一个数组,包含其姓名和成绩:
$students = [
['name' => 'Alice', 'score' => 85],
['name' => 'Bob', 'score' => 90],
['name' => 'Charlie', 'score' => 75]
];
在上面的示例中,我们有一个包含三个元素的外部数组,每个元素都是一个关联数组,表示一个学生的姓名和分数。
常用数组之数组函数
1. array_merge()
函数 array_merge()
用于合并一个或多个数组。如果数组包含数组元素,合并的结果可能会更复杂。
$array1 = [
['name' => 'Alice', 'score' => 85],
['name' => 'Bob', 'score' => 90]
];
$array2 = [
['name' => 'Charlie', 'score' => 75],
['name' => 'David', 'score' => 80]
];
$merged = array_merge($array1, $array2);
print_r($merged);
输出:
Array
(
[0] => Array
(
[name] => Alice
[score] => 85
)
[1] => Array
(
[name] => Bob
[score] => 90
)
[2] => Array
(
[name] => Charlie
[score] => 75
)
[3] => Array
(
[name] => David
[score] => 80
)
)
2. array_map()
函数 array_map()
可用于应用一个回调函数到每一个数组元素。使用它,我们可以方便地处理嵌套数组。
$scores = array_map(function($student) {
return $student['score'];
}, $students);
print_r($scores);
输出:
Array
(
[0] => 85
[1] => 90
[2] => 75
)
3. array_filter()
函数 array_filter()
可以过滤数组中的元素,使用回调函数来判断哪些元素应该被保留。
$filtered = array_filter($students, function($student) {
return $student['score'] > 80;
});
print_r($filtered);
输出:
Array
(
[0] => Array
(
[name] => Alice
[score] => 85
)
[1] => Array
(
[name] => Bob
[score] => 90
)
)
4. array_walk()
函数 array_walk()
可以用来对数组应用自定义函数。它适用于需要修改原数组的场景。
array_walk($students, function(&$student) {
$student['score'] += 5; // 为每个学生的分数增加 5
});
print_r($students);
输出:
Array
(
[0] => Array
(
[name] => Alice
[score] => 90
)
[1] => Array
(
[name] => Bob
[score] => 95
)
[2] => Array
(
[name] => Charlie
[score] => 80
)
)
5. array_reduce()
函数 array_reduce()
用于将数组简化为单一的值,使用一个用户自定义的回调函数。
$totalScore = array_reduce($students, function($carry, $student) {
return $carry + $student['score'];
}, 0);
echo "Total Score: " . $totalScore; // Total Score: 265
小结
在本章中,我们探讨了 PHP 中数组之数组的常用函数,并结合实际示例理解了它们的用法。这些函数对于处理复杂的数据结构尤为重要,将为您在后续处理数组时提供强有力的工具。
在下一章中,我们将深入探讨如何遍历这些嵌套数组,并以更高效的方式访问和操作元素。