如何打印通过URL参数检测到的特定数组的所有子项


How can I print all children of a specific array that I detect via URL parameter?

这是我的数组:

array(1) {
  ["farm"]=>
  array(1) {
    ["animals"]=>
    array(1) {
      [horses]=>
      array(4) {
        ["fred"]=>
        string(4) "fred"
        ["sam"]=>
        string(4) "sam"
        ["alan"]=>
        string(4) "alan"
        ["john"]=>
        string(4) "john"
      }
    }
  }
}

这是我的URL

mypage.php?id=2&dir=animals

我想打印我的URL参数dir(在这种情况下:动物)的子项

这就是我尝试的方法:

 foreach($array as $sub) {
        if ($_GET['dir'] == $sub){
        $result = array_merge($result, $sub);
        echo $result;
        }
}

我的结果是:一个空页面。

我希望得到的结果:horses

您的数组:

$arr = array("farm" => 
             array("animals"=>
                   array("horses" => 
                         array("fred" => "fred",
                               "sam" => "sam",
                               "alan" => "alan",
                               "john" => "john")
                        )
                  )
            );

在这里,我制作了一个递归函数来搜索值。

如果搜索fred及其同级,则此函数不起作用。

$search = 'horses';
get_values($arr);
function get_values($arr){  
    global $search;
    foreach($arr as $key => $value){
        if($key == $search){
            if(is_array($value)){
                echo join(", ", array_keys($value));
            }           
            else{
                echo $value;
            }
        }else{
            get_values($value);
        }       
    }   
}

输出:

弗雷德、山姆、阿兰、约翰

您的$array有一个farm密钥,而farm只包含您的dir动物。

如果一切都在farm中,你可以这样做:

if(!empty($_GET['dir'])) {
  $result = array_merge($result, $array['form'][$_GET['dir']]
}
print_r($result);

我不知道$result最初包含什么,但如果不是这样,您可以进行调整,或者如果$result 中没有多个项目,则仅使用echo $array['form'][$_GET['dir']]