Home  >  Article  >  Backend Development  >  Elegant way to calculate array intersection and union using lambda function in PHP

Elegant way to calculate array intersection and union using lambda function in PHP

WBOY
WBOYOriginal
2024-05-04 18:45:01862browse

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.

Elegant way to calculate array intersection and union using lambda function in PHP

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn