>我得到具有不同结构的多维数组,如下所示:
阵列 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 种不同的结构,因此不可能以严格的方式循环数组
该数组组织为树。树最好由递归函数处理。这将可以:
function extract_Name($arr, $path, &$result)
{
foreach ($arr as $k => $v)
{
if ($k == "Name")
{
$result[$path . "/" . $k] = $v;
}
else if (is_array($v))
{
extract_Name($v, $path . "/" . $k, $result);
}
}
}
$result = array();
extract_Name($your_struc, "", $result);
var_dump($result);
示例输出:
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;
跟:
$result[] = $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"
}