以下代码显示了一个多维数组,以及一个循环遍历数组以回显带链接的嵌套菜单的函数。
然而,该功能似乎没有工作,因为没有任何回应。
它有效,但我已经更改了一些包含,所以它可能与此有关吗?
<?php
$urls = array (
0=>array (
0=>"Home",
1=>"http://uni.michaelnorris.co.uk/",
2=>"Home",
3=>"",
4=>"",
5=>"1"
),
1=>array (
0=>"Blog",
1=>"http://uni.michaelnorris.co.uk/blog/",
2=>"Blog",
3=>"",
4=>"",
5=>"1"
),
2=>array (
0=>"Glossary",
1=>"http://uni.michaelnorris.co.uk/",
2=>"Glossary",
3=>"",
4=>"",
5=>"1"
),
3=>array (
0=>"Resources",
1=>"http://uni.michaelnorris.co.uk/blog/",
2=>"Resources",
3=>"",
4=>"",
5=>"1"
),
4=>array (
0=>"Staff",
1=>"http://uni.michaelnorris.co.uk/",
2=>"Staff",
3=>"",
4=>"",
5=>"1"
),
5=>array (
0=>"Blog",
1=>"http://uni.michaelnorris.co.uk/blog/",
2=>"Blog",
3=>"",
4=>"",
5=>"1"
),
6=>array (
0=>"Home",
1=>"http://uni.michaelnorris.co.uk/",
2=>"Home",
3=>"",
4=>"",
5=>"1"
),
7=>array (
0=>"Blog",
1=>"http://uni.michaelnorris.co.uk/blog/",
2=>"Blog",
3=>"",
4=>"",
5=>"1"
)
);
function showMenu()
{
$top = count($urls);
echo "<ul>";
for ($i=0;$i<$top;$i++) {
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a><li>";
}
echo "</ul>";
}
?>
<?php showMenu(); ?>
答案 0 :(得分:7)
退后一步,我发现了你的问题。将showMenu
替换为:
function showMenu()
{
global $urls;
$top = count($urls);
echo "<ul>";
for ($i=0;$i<$top;$i++) {
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a></li>";
}
echo "</ul>";
}
您已在函数范围之外声明$urls
。将来,请告诉我们您的问题代码有什么问题,而不是让我们猜测。
答案 1 :(得分:3)
URLS是在showMenu函数范围之外定义的,因此它不知道该函数是否存在。您可以使用全局方法将其引入:
function showMenu() {
global $urls;
[...]
}
或者您可以将其作为变量传递:
$urls = array();
function showMenu($urls) {
[...]
}
showMenu($urls);
或者你可以在函数本身中定义$ urls。
此外,您可能有兴趣知道您不必显式编号数组。您可以更轻松地将其键入:
$urls = array(
array()
,array()
,array()
);
答案 2 :(得分:2)
您正尝试从函数内部访问$urls
变量,这是不可能的。您必须将数组传递给函数或让函数知道这是一个全局变量。以下是您的代码的修改版本:
function showMenu($urls)
{
$top = count($urls);
echo "<ul>";
for ($i=0;$i<$top;$i++) {
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a></li>";
}
echo "</ul>";
}
?>
<?php showMenu($urls); ?>
我还在结束/
<li>
答案 3 :(得分:0)
您还缺少结束列表元素上的斜杠:
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a><li>";
应该是:
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a></li>";
答案 4 :(得分:0)
你在你的函数之外声明你的数组,所以它在你的函数中没有任何范围。要么将数组声明为全局,要么将数组传递给函数。我更喜欢后者。
答案 5 :(得分:0)
你忘记了
global $urls;
位于showMenu函数的顶部。
function showMenu()
{
global $urls;
$top = count($urls);
...