PHP 中的高级数组操作154


简介

PHP 中的数组是一种强大的数据结构,可用于存储和操作相关数据。除了基本数组操作,如索引和遍历,PHP 还提供了各种高级函数来处理复杂的数据集。本文将探讨 PHP 中这些高级数组操作,展示其用法和优点。

1. array_map()

array_map() 函数应用给定回调函数到数组中的每个元素,并返回一个包含结果的新数组。回调函数接受两个参数:数组元素和元素的键。
$numbers = [1, 2, 3, 4, 5];
$squaredNumbers = array_map(function($n) {
return $n * $n;
}, $numbers);
print_r($squaredNumbers); // 输出:[1, 4, 9, 16, 25]

2. array_filter()

array_filter() 函数使用给定回调函数过滤数组,并返回一个只包含满足回调函数条件的元素的新数组。回调函数接受两个参数:数组元素和元素的键。
$users = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Peter', 'age' => 22]
];
$adultUsers = array_filter($users, function($user) {
return $user['age'] >= 25;
});
print_r($adultUsers); // 输出:[
// ['name' => 'John', 'age' => 25],
// ['name' => 'Jane', 'age' => 30]
// ]

3. array_reduce()

array_reduce() 函数将数组中的所有元素逐个累加,并返回累积后的最终值。它接受两个回调函数:第一个函数处理累积过程,第二个函数初始化累积器。
$numbers = [1, 2, 3, 4, 5];
$sum = array_reduce($numbers, function($carry, $item) {
return $carry + $item;
}, 0);
echo "Sum of numbers: $sum"; // 输出:15

4. array_column()

array_column() 函数从多维数组中提取特定列的数据,并返回一个包含这些列值的数组。它接受两个参数:多维数组和列键。
$users = [
['name' => 'John', 'email' => 'john@'],
['name' => 'Jane', 'email' => 'jane@'],
['name' => 'Peter', 'email' => 'peter@']
];
$emails = array_column($users, 'email');
print_r($emails); // 输出:['john@', 'jane@', 'peter@']

5. array_chunk()

array_chunk() 函数将数组拆分成大小相等的块,并返回一个包含这些块的数组。它接受两个参数:数组和块的大小。
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$chunks = array_chunk($numbers, 3);
print_r($chunks); // 输出:[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

6. array_combine()

array_combine() 函数将两个数组组合成一个键值对数组。它接受两个参数:键数组和值数组。
$keys = ['name', 'age', 'email'];
$values = ['John', 25, 'john@'];
$user = array_combine($keys, $values);
print_r($user); // 输出:['name' => 'John', 'age' => 25, 'email' => 'john@']

7. array_diff()

array_diff() 函数计算两个数组之间的差异,并返回一个包含在第一个数组但不在第二个数组中的元素的新数组。它接受任意数量的数组作为参数。
$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4];
$difference = array_diff($array1, $array2);
print_r($difference); // 输出:[1, 2, 5]

8. array_diff_assoc()

array_diff_assoc() 函数与 array_diff() 类似,但它使用键进行比较,并且只返回在第一个数组但不在第二个数组中的元素。
$users1 = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Peter', 'age' => 22]
];
$users2 = [
['name' => 'John', 'age' => 25],
['name' => 'Mary', 'age' => 28]
];
$difference = array_diff_assoc($users1, $users2);
print_r($difference); // 输出:[
// ['name' => 'Jane', 'age' => 30],
// ['name' => 'Peter', 'age' => 22]
// ]

9. array_diff_key()

array_diff_key() 函数与 array_diff() 类似,但它使用键进行比较,并且只返回在第一个数组但不在第二个数组中的键。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$difference = array_diff_key($array1, $array2);
print_r($difference); // 输出:['a' => 1, 'c' => 3]

10. array_intersect()

array_intersect() 函数计算两个数组的交集,并返回一个包含同时出现在这两个数组中的元素的新数组。它接受任意数量的数组作为参数。
$array1 = [1, 2, 3, 4, 5];
$array2 = [3, 4, 5, 6, 7];
$intersection = array_intersect($array1, $array2);
print_r($intersection); // 输出:[3, 4, 5]

11. array_intersect_assoc()

array_intersect_assoc() 函数与 array_intersect() 类似,但它使用键进行比较,并且只返回同时出现在这两个数组中的元素。
$users1 = [
['name' => 'John', 'age' => 25],
['name' => 'Jane', 'age' => 30],
['name' => 'Peter', 'age' => 22]
];
$users2 = [
['name' => 'John', 'age' => 25],
['name' => 'Mary', 'age' => 28]
];
$intersection = array_intersect_assoc($users1, $users2);
print_r($intersection); // 输出:[
// ['name' => 'John', 'age' => 25]
// ]

12. array_intersect_key()

array_intersect_key() 函数与 array_intersect() 类似,但它使用键进行比较,并且只返回同时出现在这两个数组中的键。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$intersection = array_intersect_key($array1, $array2);
print_r($intersection); // 输出:['b' => 2]

13. array_merge()

array_merge() 函数合并两个或多个数组,并返回一个包含所有元素的新数组。它接受任意数量的数组作为参数。
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$mergedArray = array

2024-10-29


上一篇:PHP 在 Linux 上的配置文件位置

下一篇:PHP URL 数组参数:获取、设置和操作