Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara yang elegan untuk mengira persilangan dan penyatuan tatasusunan menggunakan fungsi lambda dalam PHP

Cara yang elegan untuk mengira persilangan dan penyatuan tatasusunan menggunakan fungsi lambda dalam PHP

WBOY
WBOYasal
2024-05-04 18:45:01864semak imbas

Dalam PHP, fungsi lambda boleh digunakan sebagai cara yang elegan untuk mengendalikan persilangan dan penyatuan tatasusunan. Untuk persimpangan, gunakan fungsi array_filter() dengan fungsi lambda untuk menapis elemen untuk menentukan sama ada ia wujud dalam tatasusunan lain untuk kesatuan, gunakan fungsi array_reduce() dengan fungsi lambda untuk menggabungkan elemen unik antara tatasusunan. Kaedah ini memudahkan pengiraan dan meningkatkan fleksibiliti dan kebolehbacaan kod.

Cara yang elegan untuk mengira persilangan dan penyatuan tatasusunan menggunakan fungsi lambda dalam PHP

Cara yang elegan untuk mengira persilangan dan penyatuan tatasusunan menggunakan fungsi lambda dalam PHP

Fungsi lambda dalam PHP, juga dikenali sebagai fungsi tanpa nama, menyediakan cara mudah untuk memproses dan mengubah tatasusunan. Dengan memanfaatkan kesederhanaan mereka, kami boleh melaksanakan operasi tatasusunan yang lebih kompleks dengan kurang kod.

Kira Persimpangan Tatasusunan

Persimpangan tatasusunan ialah set elemen yang wujud serentak dalam dua atau lebih tatasusunan. Kita boleh mengira persimpangan menggunakan fungsi array_intersect(), tetapi ini boleh dilakukan dengan lebih elegan menggunakan fungsi lambda. array_intersect() 函数计算交集,但使用 lambda 函数可以更优雅地实现。

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

输出:

Array
(
    [2] => 3
    [3] => 4
    [4] => 5
)

计算数组并集

数组并集是两个或多个数组中所有元素的集合。我们可以使用 array_merge()

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

Kesatuan tatasusunan hitung

Kesatuan tatasusunan ialah set semua elemen dalam dua atau lebih tatasusunan. Kita boleh mengira kesatuan menggunakan fungsi array_merge(), tetapi fungsi lambda menyediakan pendekatan yang lebih fleksibel.

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

🎜Kes praktikal🎜🎜🎜Pertimbangkan laman web e-dagang di mana anda perlu mengira persimpangan semua item dalam troli beli-belah pengguna untuk menentukan item yang dibeli bersama. Anda boleh melakukan ini dengan mudah menggunakan fungsi lambda: 🎜rrreee🎜Output: 🎜rrreee

Atas ialah kandungan terperinci Cara yang elegan untuk mengira persilangan dan penyatuan tatasusunan menggunakan fungsi lambda dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn