PHP通过键从不同的结构化多维数组中获取值
我得到了具有不同结构的多维数组,如下所示: 阵列1: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"]=>
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"
}