Home > Article > Backend Development > Elegant way to calculate array intersection and union using lambda function in PHP
In PHP, lambda functions can be used as an elegant way to handle the intersection and union of arrays. For intersections, use the array_filter() function with the lambda function to filter elements to determine whether they exist in another array; for unions, use the array_reduce() function with the lambda function to merge unique elements between arrays. These methods simplify calculations and improve code flexibility and readability.
The elegant way to calculate the intersection and union of arrays using the lambda function in PHP
The lambda function in PHP, also known as Anonymous functions provide a convenient way to manipulate and transform arrays. By taking advantage of their simplicity, we can implement more complex array operations with less code.
Calculate array intersection
Array intersection is a set of elements that exist simultaneously in two or more arrays. We can calculate the intersection using the array_intersect()
function, but this can be done more elegantly using a lambda function.
<?php $array1 = [1, 2, 3, 4, 5]; $array2 = [3, 4, 5, 6, 7]; $intersection = array_filter($array1, function($value) use ($array2) { return in_array($value, $array2); }); print_r($intersection); ?>
Output:
Array ( [2] => 3 [3] => 4 [4] => 5 )
Calculate the union of arrays
The union of arrays is the set of all elements in two or more arrays. We can compute the union using the array_merge()
function, but the lambda function provides a more flexible approach.
<?php $array1 = [1, 2, 3, 4, 5]; $array2 = [3, 4, 5, 6, 7]; $union = array_reduce($array1, function($result, $value) use ($array2) { if (!in_array($value, $array2)) { $result[] = $value; } return $result; }, $array2); print_r($union); ?>
Output:
Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 [5] => 1 [6] => 2 )
Practical case
Consider an e-commerce website where you need to calculate the intersection of all items in the user's shopping cart to determine Items purchased together. You can do this easily using lambda functions:
<?php $user1Cart = [1, 2, 3, 4, 5]; $user2Cart = [3, 4, 5, 6, 7]; $commonItems = array_filter($user1Cart, function($value) use ($user2Cart) { return in_array($value, $user2Cart); }); // 展示共同购买的商品 foreach ($commonItems as $item) { echo $item . " "; } ?>
Output:
3 4 5
The above is the detailed content of Elegant way to calculate array intersection and union using lambda function in PHP. For more information, please follow other related articles on the PHP Chinese website!