ホームページ >バックエンド開発 >PHPチュートリアル >PHP ジェネレーターを使用して配列の交差と共用体を生成するユニークな方法

PHP ジェネレーターを使用して配列の交差と共用体を生成するユニークな方法

王林
王林オリジナル
2024-05-02 11:39:011012ブラウズ

ジェネレーターを使用して配列の交差と共用体を生成する手順は次のとおりです。ジェネレーター関数を定義し、yield を使用して値を返し、その現在の状態を記憶します。 array_intersect() 関数を使用して配列の交差を作成し、交差内の要素を含む新しい配列を返すジェネレーター。同様に、array_merge() 関数を使用して配列の結合用のジェネレーターを作成し、両方の配列のすべての要素を含む新しい配列を返します。ジェネレーター変数を使用して交差または結合を反復し、各要素を取得します。

PHP ジェネレーターを使用して配列の交差と共用体を生成するユニークな方法

#PHP ジェネレーターを使用して配列の交差部分と共用体を生成するユニークな方法

PHP では、ジェネレーターは、配列を生成するための特別な関数です。シーケンスデータ。これらは、大規模なデータセットを走査する必要がある場合や結果を遅延計算する必要がある状況での使用に最適です。この記事では、ジェネレーターを使用して配列の交差と共用体を生成する独自の方法を示します。

ジェネレーター構文

ジェネレーター関数は、

yield キーワードを使用して PHP で定義されます。このキーワードを使用すると、関数は実行を中断せずに値を返し、その現在の状態を記憶できます。

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;
        }
    }
}

実践例

次の例を考えてみましょう:

$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 . " ";
}

これは出力されます:

3 4 5
1 2 3 4 5 6 7

以上がPHP ジェネレーターを使用して配列の交差と共用体を生成するユニークな方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。