在多維數組中搜尋特定的鍵值對可能是一項繁瑣的任務,尤其是如果您不知道的話數組的深度。本文介紹了一個高效率的 PHP 函數,它遞歸地遍歷數組,傳回所有符合搜尋條件的子數組。
函數 search() 接受三個參數:要搜尋的陣列、要搜尋的鍵,以及要符合的值。它使用遞歸來探索數組的所有級別,檢查每個級別的鍵值對。
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中文網其他相關文章!