PHP通过键从不同的结构化多维数组中获取值

PHP通过键从不同的结构化多维数组中获取值,php,search,multidimensional-array,Php,Search,Multidimensional Array,我得到了具有不同结构的多维数组,如下所示: 阵列1: array(1) { ["BrowseNode"]=> array(3) { ["BrowseNodeId"]=> string(9) "364935031" ["Name"]=> string(17) "Taschen & Schalen" ["Ancestors"]=> array(1) { ["BrowseNode"]=>

我得到了具有不同结构的多维数组,如下所示:

阵列1:

array(1) {
  ["BrowseNode"]=>
  array(3) {
    ["BrowseNodeId"]=>
    string(9) "364935031"
    ["Name"]=>
    string(17) "Taschen & Schalen"
    ["Ancestors"]=>
    array(1) {
      ["BrowseNode"]=>
      array(3) {
        ["BrowseNodeId"]=>
        string(9) "364918031"
        ["Name"]=>
        string(13) "Handyzubehör"
        ["Ancestors"]=>
        array(1) {
          ["BrowseNode"]=>
          array(3) {
            ["BrowseNodeId"]=>
            string(10) "1384526031"
            ["Name"]=>
            string(17) "Handys & Zubehör"
            ["Ancestors"]=>
            array(1) {
              ["BrowseNode"]=>
              array(4) {
                ["BrowseNodeId"]=>
                string(6) "569604"
                ["Name"]=>
                string(10) "Kategorien"
                ["IsCategoryRoot"]=>
                string(1) "1"
                ["Ancestors"]=>
                array(1) {
                  ["BrowseNode"]=>
                  array(2) {
                    ["BrowseNodeId"]=>
                    string(6) "562066"
                    ["Name"]=>
                    string(17) "Elektronik & Foto"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
} 
阵列2:

array(1) {
  ["BrowseNode"]=>
  array(2) {
    [0]=>
    array(4) {
      ["BrowseNodeId"]=>
      string(9) "122877031"
      ["Name"]=>
      string(6) "Düfte"
      ["Children"]=>
      array(1) {
        ["BrowseNode"]=>
        array(6) {
          [0]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(10) "2795107031"
            ["Name"]=>
            string(5) "Damen"
          }
          [1]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(10) "2795100031"
            ["Name"]=>
            string(6) "Herren"
          }
          [2]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(10) "4695227031"
            ["Name"]=>
            string(19) "Kerzen & Raumdüfte"
          }
          [3]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(10) "2795099031"
            ["Name"]=>
            string(6) "Kinder"
          }
          [4]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(9) "591313031"
            ["Name"]=>
            string(18) "Parfümzerstäuber"
          }
          [5]=>
          array(2) {
            ["BrowseNodeId"]=>
            string(9) "591280031"
            ["Name"]=>
            string(4) "Sets"
          }
        }
      }
      ["Ancestors"]=>
      array(1) {
        ["BrowseNode"]=>
        array(4) {
          ["BrowseNodeId"]=>
          string(8) "84231031"
          ["Name"]=>
          string(10) "Kategorien"
          ["IsCategoryRoot"]=>
          string(1) "1"
          ["Ancestors"]=>
          array(1) {
            ["BrowseNode"]=>
            array(2) {
              ["BrowseNodeId"]=>
              string(8) "84230031"
              ["Name"]=>
              string(6) "Beauty"
            }
          }
        }
      }
    }
    [1]=>
    array(3) {
      ["BrowseNodeId"]=>
      string(9) "161329031"
      ["Name"]=>
      string(11) "Lidschatten"
      ["Ancestors"]=>
      array(1) {
        ["BrowseNode"]=>
        array(3) {
          ["BrowseNodeId"]=>
          string(9) "161320031"
          ["Name"]=>
          string(5) "Augen"
          ["Ancestors"]=>
          array(1) {
            ["BrowseNode"]=>
            array(3) {
              ["BrowseNodeId"]=>
              string(9) "122880031"
              ["Name"]=>
              string(7) "Make-Up"
              ["Ancestors"]=>
              array(1) {
                ["BrowseNode"]=>
                array(4) {
                  ["BrowseNodeId"]=>
                  string(8) "84231031"
                  ["Name"]=>
                  string(10) "Kategorien"
                  ["IsCategoryRoot"]=>
                  string(1) "1"
                }
              }
            }
          }
        }
      }
    }
  }
}

是否有一种方法可以从
Name
键获取字符串的所有值?到目前为止,我已经看到了至少30种不同的结构,因此不可能严格地循环数组

数组被组织为一棵树。树最好由递归函数处理。这将有助于:

函数提取\u名称($arr、$path和$result)
{
foreach($arr为$k=>$v)
{
如果($k==“名称”)
{
$result[$path./“$k]=$v;
}
else if(is_数组($v))
{
提取名称($v,$path.“/”$k,$result);
}
}
}
$result=array();
提取名称($your_struc,“,$result);
var_dump($结果);
样本输出:

array(5) {
  ["/BrowseNode/Name"]=>
  string(17) "Taschen & Schalen"
  ["/BrowseNode/Ancestors/BrowseNode/Name"]=>
  string(13) "Handyzubehör"
  ["/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Name"]=>
  string(17) "Handys & Zubehör"
  ["/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Name"]=>
  string(10) "Kategorien"
  ["/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Ancestors/BrowseNode/Name"]=>
  string(17) "Elektronik & Foto"
}
如果只需要名称,而不需要指向名称的路径,则可以简单地替换:

$result[$path . "/" . $k] = $v;
与:

这种情况下的输出为:

array(5) {
  [0]=>
  string(17) "Taschen & Schalen"
  [1]=>
  string(13) "Handyzubehör"
  [2]=>
  string(17) "Handys & Zubehör"
  [3]=>
  string(10) "Kategorien"
  [4]=>
  string(17) "Elektronik & Foto"
}

皮埃尔·马尼切是克莱纳·凯勒拉夫^^
array(5) {
  [0]=>
  string(17) "Taschen & Schalen"
  [1]=>
  string(13) "Handyzubehör"
  [2]=>
  string(17) "Handys & Zubehör"
  [3]=>
  string(10) "Kategorien"
  [4]=>
  string(17) "Elektronik & Foto"
}