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

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

DDD
リリース: 2024-12-24 14:25:10
オリジナル
514 人が閲覧しました

How to Efficiently Find Key-Value Pairs in Multidimensional PHP Arrays?

PHP でキーを使用して多次元配列内の値を検索する

多次元配列内の特定のキーと値のペアを検索するのは、特に知識がない場合、退屈な作業になる可能性があります。配列の深さ。この記事では、配列を再帰的に走査し、検索条件に一致するすべてのサブ配列を返す効率的な PHP 関数を紹介します。

関数 search() は、検索する配列、検索するキーの 3 つのパラメータを取ります。 、および一致する値。再帰を使用して配列のすべてのレベルを探索し、各レベルでキーと値のペアをチェックします。

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'));
ログイン後にコピー

search( $arr, 'name', 'cat 1') は次を返します:

array(0 => array('id' => 1, 'name' => 'cat 1'),
      1 => array('id' => 3, 'name' => 'cat 1'));
ログイン後にコピー

効率を高めるために、関数の最適化されたバージョン、 search_r() は次のように使用できます。

function search($array, $key, $value)
{
    $results = array();
    search_r($array, $key, $value, $results);
    return $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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート