ホームページ >バックエンド開発 >PHPの問題 >PHP は多数派グループのマージを実装します

PHP は多数派グループのマージを実装します

WBOY
WBOYオリジナル
2023-05-07 13:30:111209ブラウズ

PHP 開発では、複数の配列をマージする必要がある状況がよくありますが、マージされた配列には、元の配列のすべての要素が含まれ、各キーと値のペアの関係が保持されている必要があります。この記事では、PHP を使用して多数決グループのマージを実現する方法を紹介します。

1. array_merge 関数

PHP の組み込みの array_merge 関数は、2 つ以上の配列をマージできます。キー名が同じであれば、すべての配列の要素を新しい配列にマージします。その後、後の値で前の値が上書きされます。

サンプルコードは次のとおりです:

$arr1 = array('a', 'b', 'c');
$arr2 = array('d', 'e', 'f');
$arr3 = array('g', 'h', 'i');

$newArr = array_merge($arr1, $arr2, $arr3);

print_r($newArr);

出力結果は次のとおりです:

Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
    [6] => g
    [7] => h
    [8] => i
)

2. カスタム関数

同じ値が複数の配列に存在する場合マージされるキー名。array_merge 関数は以前の値を上書きしますが、これは要件を満たしていません。この問題を解決するには、関数をカスタマイズして多数決の組み合わせのマージを実現します。

カスタム関数のロジックは次のとおりです。配列のすべてのキーと値のペアを走査し、同じキー名の値を新しい配列に保存します。同じキー名が存在する場合は、その値をキー名でインデックス付けされた配列にキーが存在しない場合、値は新しい配列要素に保存されます。

サンプルコードは以下のとおりです:

function multiArrayMerge(...$arrays)
{
    $result = array();
    foreach ($arrays as $array) {
        foreach ($array as $key => $value) {
            if (is_int($key)) {
                $result[] = $value;
            } else {
                if (array_key_exists($key, $result) && is_array($value)) {
                    $result[$key] = multiArrayMerge($result[$key], $value);
                } else {
                    $result[$key] = $value;
                }
            }
        }
    }
    return $result;
}

複数の配列マージ関数の呼び出し例:

$arr1 = array(
    'a' => 1,
    'b' => array(
        'c' => 2,
        'd' => array(
            'e' => 3
        )
    )
);

$arr2 = array(
    'a' => 4,
    'b' => array(
        'c' => 5,
        'd' => array(
            'f' => 6
        )
    )
);

$arr3 = array(
    'g' => 7,
    'h' => array(
        'i' => 8
    )
);

$result = multiArrayMerge($arr1, $arr2, $arr3);

print_r($result);

出力結果:

Array
(
    [a] => 4
    [b] => Array
        (
            [c] => 5
            [d] => Array
                (
                    [e] => 3
                    [f] => 6
                )

        )

    [g] => 7
    [h] => Array
        (
            [i] => 8
        )

)

3.

カスタム関数を使用して多数派グループのマージを実現する場合、いくつかの問題に注意する必要があります:

1. 同じキー名と異なる配列の値がある場合マージされるとデータの競合が発生する可能性があるため、特定のビジネス ロジックが処理されることを考慮する必要があります。

2. 関数の無限再帰を防ぐためには、配列内の値を判定する必要があります。配列の場合は再帰演算を実行し、それ以外の場合は結果に値を直接保存します。配列。

3. パラメータの前の 3 つのドット (...) は、任意の数のパラメータを受け入れることができる可変長パラメータ リストを示します。パラメータ リストは、使用する配列に自動的に変換されます。

4. 概要

PHP には配列をマージする array_merge 関数が用意されていますが、キーと値のペアの関係を保持する必要がある場合、値を同じもので上書きしてしまうという問題が発生します。キーの名前。この記事では、複数の配列をマージし、キーと値のペアの関係を保持する必要がある場合に適したカスタム関数を実装する方法を紹介しますが、使用する場合は、同じキー名のデータの競合の問題に注意する必要があります。

以上がPHP は多数派グループのマージを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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