在多维 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”的所有子数组,我们使用:
print_r(search($arr, 'name', 'cat 1'));
输出:
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中文网其他相关文章!