【发布时间】:2014-03-17 20:51:24
【问题描述】:
好吧,我被严重卡住了,我一直在研究导航菜单,但我无法按照我想要的方式运行,所以我已经改变了策略,但现在又卡住了,所以任何帮助都将不胜感激急需!
我有下面的代码,并正在尝试执行以下操作 - 我有一个包含网站所有页面信息的数组,然后是另一个包含子页面页面 ID 的数组。我想要做的是使用 foreach 循环遍历第一个数组的所有页面并检查它们的 id 是否在子 id 数组中。如果不是,那么它们是顶级导航页面,我想输出一些代码,然后设置另一个 foreach 循环,该循环将检查任何子页面是否具有当前页面的父 id 等等。
无论我尝试什么,我似乎都无法弄清楚如何将 $b 与 $childpages 数组中的 id 进行比较!这甚至可能吗?如果可以,请问如何?
这是我目前尝试的第一部分
<?php function buildMenu4 ($allpages, $childpages) {
foreach ($allpages as $pages){
$a = $pages['parentid'];
$b = $pages['id'];
$c = $childpages;
echo "<ul>\n";
if (!in_array($b, $c)) {
DO SOMETHING..........
$c 的数组内容:
Array
(
[0] => Array ( [id] => 6 )
[1] => Array ( [id] => 15 )
[2] => Array ( [id] => 100 )
[3] => Array ( [id] => 101 )
[4] => Array ( [id] => 103 )
[5] => Array ( [id] => 104 )
[6] => Array ( [id] => 105 )
)
编辑---------------------------------
我已经重新编写了我的代码,现在又回到了几天前的状态!!无论如何,下面的代码按预期工作,直到我尝试循环它,然后它只是回显第一个 foreach 循环的结果,例如foreach ($allpages as $pages){..... 但没有做任何其他事情。
我正在尝试创建一个名为 loopMenu 的函数,然后递归地运行它,直到没有更多页面要显示。我试图编写如下代码块中的 pusdo 代码所示的函数,但我无法让它工作。我可能混淆了一些参数或参数,或者我只是在某个地方犯了一个大错误,但我看不到它 - 任何帮助都会非常感激和迫切需要!
<?php function buildMenu6 ($allpages, $childpageids, $childpages, $subchildpages) {
foreach ($childpageids as $childid){
$c[] = $childid['id'];
};
echo "<ul>\n";
foreach ($allpages as $pages){
$a = $pages['parentid'];
$b = $pages['id'];
if (!in_array($b, $c)){
echo "<li><a href=" . $pages['url'] . ">" . $pages['linklabel'] . "</a>";
WHERE I WANT THE FUNCTION TO START E.G. function loopMenu($childpages, $subchildpages){...the code that follows....
echo"<ul>\n";
foreach ($childpages as $childparent) {
$d = $childparent['parentid'];
$e = $childparent['id'];
if (($d == $b) or ($d == $g)) {
echo "<li><a href=" . $childparent['url'] . ">" . $childparent['linklabel'] . "</a>";
echo "<ul>\n";
foreach ($subchildpages as $subchild){
$g = $subchild['id'];
$f = $subchild['parentid'];
if ($f == $e){
echo "<li><a href=" . $subchild['url'] . ">" . $subchild['linklabel'] . "</a>";
WHERE I TRY TO RERUN THE FUNCTION USING loopMenu($childparent, $subchild);
echo "<li/>";
};
};
echo"</ul>\n";
echo "</li>";
};
};
echo "</ul>\n";
WHERE I WANT MY FUNCTION TO END E.G. };
echo "</li>";
};
};
echo "</ul>\n";
}; ?>
然后我像这样调用主 buildMenu6 函数:
<?php buildMenu6($pageids, $childPageIds, $childPageArray, $childPageArray); ?>
【问题讨论】:
-
您可能还需要遍历 $c 的内容,但是由于我看不到 $c(子页面)中的数据是如何构造的,所以我无法编写示例。 childpages 数组是什么样的?
-
我编辑了上面的帖子并添加了数组的结构和内容
-
$childpages 是一个数组吗?
-
您能否整理一个示例来运行并显示在 sandbox.onlinephpfunctions.com 上没有按预期工作的内容?
-
从技术上讲,$childPageArray 是数组,我使用 $childpages 通过调用像这样的函数将它传递给函数 - 我很可能犯了一些愚蠢的错误,因为我已经做了这么长时间了,现在我有点糊涂了!
标签: php arrays function foreach