多次元配列内の特定のキーと値のペアを検索するのは、特に知識がない場合、退屈な作業になる可能性があります。配列の深さ。この記事では、配列を再帰的に走査し、検索条件に一致するすべてのサブ配列を返す効率的な 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 サイトの他の関連記事を参照してください。