Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara unik untuk menjana persilangan tatasusunan dan kesatuan menggunakan penjana PHP

Cara unik untuk menjana persilangan tatasusunan dan kesatuan menggunakan penjana PHP

王林
王林asal
2024-05-02 11:39:01979semak imbas

Langkah-langkah untuk menggunakan penjana untuk menjana persimpangan tatasusunan dan kesatuan adalah seperti berikut: tentukan fungsi penjana, gunakan hasil untuk mengembalikan nilai dan ingat keadaan semasanya. Penjana yang mencipta persimpangan tatasusunan, menggunakan fungsi array_intersect() untuk mengembalikan tatasusunan baharu yang mengandungi unsur-unsur dalam persimpangan itu. Begitu juga, cipta penjana untuk penyatuan tatasusunan, menggunakan fungsi array_merge() untuk mengembalikan tatasusunan baharu yang mengandungi semua elemen dalam kedua-dua tatasusunan. Gunakan pembolehubah penjana untuk lelaran di atas persimpangan atau kesatuan, mendapatkan setiap elemen.

Cara unik untuk menjana persilangan tatasusunan dan kesatuan menggunakan penjana PHP

Cara unik untuk menjana persilangan tatasusunan dan penyatuan menggunakan penjana PHP

Dalam PHP, penjana ialah fungsi khas yang digunakan untuk menjana data jujukan. Ia sesuai untuk digunakan dalam situasi di mana set data yang besar perlu dilalui atau keputusan dikira dengan malas. Artikel ini menunjukkan cara unik menggunakan penjana untuk menjana persimpangan tatasusunan dan kesatuan.

Sintaks penjana

Fungsi penjana ditakrifkan dalam PHP menggunakan kata kunci hasil. Kata kunci ini membenarkan fungsi untuk mengembalikan nilai dan mengingati keadaan semasanya tanpa mengganggu pelaksanaan. yield 关键字定义。该关键字允许函数在不中断执行的情况下返回一个值并记住其当前状态。

function myGenerator() {
    yield 1;
    yield 2;
    yield 3;
}

数组交集生成器

要创建数组交集的生成器,可以使用 array_intersect() 函数,该函数返回一个包含交集中元素的新数组。生成器版本如下:

function intersectGenerator(array $arr1, array $arr2): Generator {
    foreach ($arr1 as $k => $v) {
        if (in_array($v, $arr2, true)) {
            yield $v;
        }
    }
}

数组并集生成器

类似地,可以使用 array_merge()

function mergeGenerator(array $arr1, array $arr2): Generator {
    foreach ($arr1 as $v) {
        yield $v;
    }
    foreach ($arr2 as $v) {
        if (!in_array($v, $arr1, true)) {
            yield $v;
        }
    }
}

Array Intersection Generator

Untuk mencipta penjana bagi persimpangan tatasusunan, anda boleh menggunakan fungsi array_intersect(), yang mengembalikan tatasusunan baharu yang mengandungi elemen dalam persimpangan. Versi penjana adalah seperti berikut:

$arr1 = [1, 2, 3, 4, 5];
$arr2 = [3, 4, 5, 6, 7];

$intersection = intersectGenerator($arr1, $arr2);
$union = mergeGenerator($arr1, $arr2);

foreach ($intersection as $value) {
    echo $value . " ";
}
echo "\n";

foreach ($union as $value) {
    echo $value . " ";
}

Array Union Generator

🎜🎜Begitu juga, penjana untuk kesatuan tatasusunan boleh dibuat menggunakan fungsi array_merge(). Fungsi ini mengembalikan tatasusunan baharu yang mengandungi semua elemen dalam kedua-dua tatasusunan (termasuk elemen pendua). Versi penjana adalah seperti berikut: 🎜
3 4 5
1 2 3 4 5 6 7
🎜🎜 Contoh praktikal 🎜🎜🎜Pertimbangkan contoh berikut: 🎜rrreee🎜Ini akan dicetak: 🎜rrreee

Atas ialah kandungan terperinci Cara unik untuk menjana persilangan tatasusunan dan kesatuan menggunakan penjana 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