Home >Backend Development >PHP Tutorial >How to do functional programming with PHP
PHP is a widely used server-side language. One of the reasons why many web developers like to use PHP is its rich function library and simple and easy-to-use function syntax. Functional programming is a programming paradigm that well encapsulates data and behavior, making the code more modular and easy to maintain and test. In this article, we will introduce how to use PHP for functional programming.
The core idea of functional programming is to treat functions as first-class citizens, and functions themselves can be passed, returned, and composed like variables. In functional programming, we don't modify mutable state, but we transform and filter it through functions.
PHP itself supports functional programming, and there are many built-in functions that can be used for functional processing. For example array_map, array_filter, etc. Below we will demonstrate how to use these functions to implement common functional programming operations.
Higher-order functions refer to functions that can accept functions as parameters or return functions. Such functions can be used to compose and reuse code. In PHP, commonly used higher-order functions include array_map, array_filter, array_reduce, etc.
The array_map function can accept a function and an array as parameters and return a new array. The elements of the new array are the values obtained after the elements in the original array are converted by the function.
For example, we have an array $x=[1,2,3,4]$ and want to square each element in the array. You can use the following code:
function square($x) { return $x * $x; } $array = [1, 2, 3, 4]; $new_array = array_map('square', $array); var_dump($new_array); // 输出 [1, 4, 9, 16]## The #array_filter function can accept a function and an array as parameters and return a new array. The elements in the new array are the elements in the original array that meet the conditions. For example, we have an array $x=[1,2,3,4]$ and want to get all the even numbers in the array. You can use the following code:
function is_even($x) { return $x % 2 == 0; } $array = [1, 2, 3, 4]; $new_array = array_filter($array, 'is_even'); var_dump($new_array); // 输出 [2, 4]array_reduce function can accept Takes a function, an array, and an initial value as arguments and returns an accumulated result. The reduce function passes each element in the array to a function for calculation, and then gets a cumulative result. For example, we have an array $x=[1,2,3,4]$ and want to accumulate all elements in the array. You can use the following code:
function add($a, $b) { return $a + $b; } $array = [1, 2, 3, 4]; $result = array_reduce($array, 'add'); var_dump($result); // 输出 10
$square = function($x) { return $x * $x; }; $result = $square(3); var_dump($result); // 输出 9Arrow function syntax can further simplify the above code:
$square = fn($x) => $x * $x; $result = $square(3); var_dump($result); // 输出 9
function add($x, $y, $z) { return $x + $y + $z; } $curried_add = function($x) use ($add) { return function($y) use ($x, $add) { return function($z) use ($x, $y, $add) { return $add($x, $y, $z); }; }; }; $result = $curried_add(1)(2)(3); var_dump($result); // 输出 6Combined function
function f($x) { return $x + 1; } function g($x) { return $x * 2; } $compose = function($f, $g) { return function($x) use ($f, $g) { return $f($g($x)); }; }; $h = $compose('f', 'g'); $result = $h(2); var_dump($result); // 输出 5Summary
The above is the detailed content of How to do functional programming with PHP. For more information, please follow other related articles on the PHP Chinese website!