欢迎访问宙启技术站
智能推送

PHP的进阶:10个高阶函数,你不得不知道

发布时间:2023-06-16 15:06:11

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还提供了许多其他高阶函数。掌握这些函数可以让您更快、更有效地编写代码,还可以提高代码可读性和可重用性。