如何从多维PHP数组中检索子集?
下面是一个PHP数组:如何从多维PHP数组中检索子集?,php,Php,下面是一个PHP数组: $arr = [ 'target_a' => [], 'target_b' => [], 'target_c' => [ 'target_d' => [], 'target_e' => [ 'target_f' => [] ], ], 'target_g' => [], ]; 目标a,目标b,目标永远不会相互重复 我需
$arr = [
'target_a' => [],
'target_b' => [],
'target_c' => [
'target_d' => [],
'target_e' => [
'target_f' => []
],
],
'target_g' => [],
];
目标a,目标b,目标永远不会相互重复
我需要一个函数:superFind(),它可以执行以下操作:
superFind('target_e');
// supposed to return:
'target_e' => [
'target_f' => []
],
superFind('target_a');
// supposed to return:
[]
即,对于给定的target_x
值,返回一个子集(最好包括其自身)
我尝试过递归函数,但不知道如何解决此问题。这应该可以为您解决此问题:
$arr = [
'target_a' => [],
'target_b' => [],
'target_c' => [
'target_d' => [],
'target_e' => [
'target_f' => []
],
],
'target_g' => [],
];
function superFind($arr, $target) {
foreach ($arr as $key => $value) {
if ($key == $target) return $value;
if (is_array($value)) {
if (($found = superFind($value, $target)) !== false) return $found;
}
}
return false;
}
foreach (['target_e', 'target_a', 'target_q'] as $test) {
echo "$test: ";
if (($found = superFind($arr, $test)) !== false) print_r($found);
else echo "Not found";
echo "\n";
}
输出:
target_e: Array
(
[target_f] => Array
(
)
)
target_a: Array
(
)
target_q: Not found