PHP的进阶:10个高阶函数,你不得不知道
PHP是一种广泛使用的编程语言,用于Web开发和其他各种应用。PHP提供了许多内置函数,其中一些函数被称为“高阶函数”。
高阶函数是指可以将其他函数作为参数传递或返回函数的函数。这些函数可用于简化代码、增加代码的可读性和重用代码。
下面是10个常用的高阶函数,对于想要提高PHP水平的程序员来说非常重要。
1. array_map()
array_map()函数接受一个函数和一个或多个数组。它将按照提供的函数对每个数组元素进行操作,并返回一个新的数组,其中包含函数的结果。
例如,以下代码使用array_map()将三个数组中的每个元素相乘,并返回一个新的数组:
$a = [1, 2, 3];
$b = [2, 3, 4];
$c = [3, 4, 5];
$result = array_map(function ($x, $y, $z) {
return $x * $y * $z;
}, $a, $b, $c);
print_r($result);
输出:
Array
(
[0] => 6
[1] => 24
[2] => 60
)
2. array_filter()
array_filter()函数接受一个数组和一个函数作为参数。它将该函数应用于数组的每个元素,并返回一个新的数组,其中包含满足条件的元素。
例如,以下代码过滤掉一个数组中的数字,并返回一个仅包含字符串的新数组:
$arr = ["hello", 123, "world", 456];
$result = array_filter($arr, function ($x) {
return !is_numeric($x);
});
print_r($result);
输出:
Array
(
[0] => hello
[2] => world
)
3. array_reduce()
array_reduce()函数接受一个数组和一个函数作为参数。它将该函数应用于数组的每个元素,并使用结果计算一个新的值。
例如,以下代码使用array_reduce()计算一个数组的总和:
$arr = [1, 2, 3, 4, 5];
$result = array_reduce($arr, function ($sum, $x) {
return $sum + $x;
});
echo $result;
输出:
15
4. array_walk()
array_walk()函数接受一个数组和一个函数作为参数。它将该函数应用于数组的每个元素,并不返回任何值。
例如,以下代码使用array_walk()在一个数组中的每个元素上应用一个函数:
$arr = [1, 2, 3];
array_walk($arr, function (&$x) {
$x *= 2;
});
print_r($arr);
输出:
Array
(
[0] => 2
[1] => 4
[2] => 6
)
5. usort()
usort()函数接受一个数组和一个函数作为参数。它将该函数应用于数组的每个元素,并使用该函数定义的比较规则对数组进行排序。
例如,以下代码使用usort()对一个数组进行排序:
$arr = ["banana", "apple", "orange"];
usort($arr, function ($a, $b) {
return strcmp($a, $b);
});
print_r($arr);
输出:
Array
(
[0] => apple
[1] => banana
[2] => orange
)
6. array_column()
array_column()函数接受一个多维数组和一个键名作为参数。它将提取数组中每个元素的指定键的值,并返回一个新的一维数组。
例如,以下代码使用array_column()从一个多维数组中提取一个键的值:
$data = [
["name" => "Tom", "age" => 20],
["name" => "Mary", "age" => 30],
["name" => "John", "age" => 40],
];
$result = array_column($data, "name");
print_r($result);
输出:
Array
(
[0] => Tom
[1] => Mary
[2] => John
)
7. array_unique()
array_unique()函数接受一个数组作为参数。它将删除数组中的重复元素,并返回一个新的数组。
例如,以下代码使用array_unique()删除一个数组中的重复元素:
$arr = [1, 2, 3, 1, 2, 4]; $result = array_unique($arr); print_r($result);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 4
)
8. array_reverse()
array_reverse()函数接受一个数组作为参数。它将该数组中的元素反转,并返回一个新的反转的数组。
例如,以下代码使用array_reverse()反转一个数组:
$arr = [1, 2, 3]; $result = array_reverse($arr); print_r($result);
输出:
Array
(
[0] => 3
[1] => 2
[2] => 1
)
9. array_slice()
array_slice()函数接受一个数组、一个起始位置和一个长度作为参数。它将提取数组中指定范围的元素,并返回一个新的数组。
例如,以下代码使用array_slice()提取一个数组的前三个元素:
$arr = [1, 2, 3, 4, 5]; $result = array_slice($arr, 0, 3); print_r($result);
输出:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
10. array_keys()
array_keys()函数接受一个数组和一个值作为参数。它将返回一个包含数组中具有指定值的所有键的新数组。
例如,以下代码使用array_keys()查找数组中所有值为2的键:
$arr = [1, 2, 3, 2, 4]; $result = array_keys($arr, 2); print_r($result);
输出:
Array
(
[0] => 1
[1] => 3
)
总结
这里列出的是一些最常用的高阶函数,但是PHP还提供了许多其他高阶函数。掌握这些函数可以让您更快、更有效地编写代码,还可以提高代码可读性和可重用性。
