Home > Backend Development > PHP Tutorial > 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
Release: 2024-05-04 18:45:01
Original
918 people have browsed it

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.

1

2

3

4

5

6

7

8

9

10

<?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);

?>

Copy after login

Output:

1

2

3

4

5

6

Array

(

    [2] => 3

    [3] => 4

    [4] => 5

)

Copy after login

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

<?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);

?>

Copy after login

Output:

1

2

3

4

5

6

7

8

9

10

Array

(

    [0] => 3

    [1] => 4

    [2] => 5

    [3] => 6

    [4] => 7

    [5] => 1

    [6] => 2

)

Copy after login

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:

1

2

3

4

5

6

7

8

9

10

11

12

13

<?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 . " ";

}

?>

Copy after login

Output:

1

3 4 5

Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template