【问题标题】:Recursive get path from multidimensional php array从多维php数组递归获取路径
【发布时间】:2014-03-24 15:29:29
【问题描述】:

我有数组:

$adm_menu_old = array (
    array( 
        'id' => 1,
        'name' => 'Test1',
    ), 
    array( 
        'id' => 3,
        'name' => 'Test3',
        'childrens' => array(
            array(
                'id' => 31,
                'name' => 'Test31',
            ),
            array(
                'id' => 32,
                'name' => 'Test32',
                'childrens' => array(
                     array(
                        'id' => 321,
                        'name' => 'Test321',
                     ),
            ),
        )
    ), 
    array( 
        'id' => 4,
        'name' => 'Test4',
    ), 
);

假设我知道 id 值。 我需要与此 ID 的所有父母一起获得路径。 例如,我需要获取此元素的路径:id=321 我需要获取带有键名值的数组:

array('Test3','Test32','Test321')

递归函数应该怎么看?

【问题讨论】:

    标签: php recursion multidimensional-array


    【解决方案1】:

    试试这个功能:

    function getNames($id, $arr) {
      $result = array();
        foreach($arr as $key => $val) {
          if(is_array($val)) {
            if($val["id"] == $id) {
              $result[] = $val["name"];
            } elseif(!empty($val["childrens"]) && is_array($val["childrens"])) {
              $sub_res = getNames($id, $val["childrens"]);
              if(count($sub_res) > 0) {
              $result[] = $val["name"];
              $result = array_merge($result, $sub_res);
            }
          }
        }
      }
      return $result;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 2017-02-26
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 2014-05-21
      • 2020-03-21
      • 2014-10-31
      • 2013-11-11
      相关资源
      最近更新 更多