2014-10-06 63 views
0

的阵列我试图在数组的数组添加元素的foreach数组

$categoryTreeStructure[$grantCategoryName][$parentCategoryName][$subCategoryText]['text'] =$subCategoryText; 
// GET CHILD CATEGORY URL 
$categoryTreeStructure[$grantCategoryName][$parentCategoryName][$subCategoryText]['url'] = $childPageLink; 

我通过每个类别试图环路

foreach($categoryTreeStructure as $categoryName => $subCategories){ 
echo $categoryName."<br>"; 
} 

我在$categoryName变得空白。 我需要遍历每个类别,我该怎么做?

+1

编辑用的var_dump'结果($ categoryTreeStructure)您questio;' – Steve 2014-10-06 12:59:14

+0

只是要清楚你要循环这个数组得到'[ '文本']'和'[ '链接']'回右边? – 2014-10-06 13:04:34

+0

请粘贴更大一部分代码,也许完整的循环。尝试启用错误显示('ini_set('display_errors','On'); error_reporting(E_ALL)')。从我们可以看到的情况来看,我认为'$ grantCategoryName'总是空的或者未定义的(可能代码中的大写/小写变量名称不同) – Asenar 2014-10-06 13:04:55

回答

0
foreach($categoryTreeStructure as $categoryName => $subCategories){ 
foreach($subCategories as $key => $val){ 
    foreach($val as $subkey => $subval){ 
     echo $subval['text'] . "<br>"; 
     echo $subval['url']; 
    } 
} 
} 

我可以看到它的工作的唯一方法是,如果你使用嵌套循环

0

你的问题是你的阵列是不是目标的第二个维度。你阵列看起来像这样:

Array 
(
    [] => Array 
     (
      [] => Array 
       (
        [foo] => Array 
         (
          [text] => foo 
          [url] => Bar 
         ) 

       ) 

     ) 

) 

如果你想接受你的数据,你会好的一个foreach这样的:

foreach($categoryTreeStructure[$parentCategoryName] as $categoryName){ 
     print_r($categoryName); 
} 

这将输出:

Array 
(
    [foo] => Array 
     (
      [text] => foo 
      [url] => Bar 
     ) 

) 

但在你为例你想要的直接文本如此:

foreach($categoryTreeStructure[$grantCategoryName][$parentCategoryName][$subCategoryText] as $categoryName){ 
     echo $categoryName; 

} 

这将输出:

foo 
Bar 

这是你作为为例为例你只看到循环的最后一个数组中,但如果你有答案了多subCategoryText按预期将需要有嵌套循环像@Rossco指出:

foreach($categoryTreeStructure as $categoryName => $subCategories){ 
foreach($subCategories as $key => $val){ 
    foreach($val as $subkey => $subval){ 
     echo $subval['text'] . "<br>"; 
     echo $subval['url']; 
    } 
} 
}