ホームページ >バックエンド開発 >PHPチュートリアル >多次元 PHP 配列でキーと値のペアを効率的に検索するにはどうすればよいですか?

多次元 PHP 配列でキーと値のペアを効率的に検索するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-19 08:29:11830ブラウズ

How Can I Efficiently Search for Key-Value Pairs in Multidimensional PHP Arrays?

多次元 PHP 配列内のキーと値のペアの再帰的検索

多次元配列内の特定のキーと値のペアを検索するのは面倒な場合があります。配列の深さが可変の場合、高速かつ効率的な解決策を見つけることが不可欠です。

再帰検索関数

次の PHP 関数は、再帰を使用して配列を再帰的に走査し、比較します。指定されたキーの値:

function search($array, $key, $value)
{
    $results = array();

    if (is_array($array)) {
        if (isset($array[$key]) && $array[$key] == $value) {
            $results[] = $array;
        }

        foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key, $value));
        }
    }

    return $results;
}

例使用法

次のサンプル配列を考えてみましょう:

$arr = array(
    0 => array('id' => 1, 'name' => 'cat 1'),
    1 => array('id' => 2, 'name' => 'cat 2'),
    2 => array('id' => 3, 'name' => 'cat 1')
);

キー 'name' と値 'cat 1' を持つすべてのサブ配列を検索するには、次のようにします。 use:

print_r(search($arr, 'name', 'cat 1'));

Output:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat 1
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat 1
        )

)

効率に関する考慮事項

特に大規模な配列の場合、効率を向上させるための場合は、結果を参照によって渡す再帰関数の使用を検討してください。単一の一時 $results 配列を共有することで、パフォーマンスが大幅に向上します:

function search_r($array, $key, $value, &$results)
{
    if (!is_array($array)) {
        return;
    }

    if (isset($array[$key]) && $array[$key] == $value) {
        $results[] = $array;
    }

    foreach ($array as $subarray) {
        search_r($subarray, $key, $value, $results);
    }
}

以上が多次元 PHP 配列でキーと値のペアを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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