下面的代码显示了一个多维数组和一个函数,该函数循环遍历该数组以回显出一个嵌套的带有链接的菜单。
然而,该函数似乎没有工作,因为没有任何内容被回显。
它是工作,但我已经改变了一些包括周围,所以它可能是与此有关?
<?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(); ?>
退后一步后,我注意到了你的问题。将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
。在以后的问题中,请告诉我们你的代码有什么问题,而不是让我们猜测。
URLS是在showMenu函数的作用域之外定义的,所以它不知道这个函数存在。您可以使用全局方法将其引入:
function showMenu() {
global $urls;
[...]
}
或者您可以将其作为变量传递:
$urls = array();
function showMenu($urls) {
[...]
}
showMenu($urls);
或者你可以在函数本身中定义$urls。
另外,您可能有兴趣知道您不必显式地为数组编号。你可以更容易地输入:
$urls = array(
array()
,array()
,array()
);
您正试图从函数内部访问$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>
您还缺少结束列表元素的斜杠:
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>";
在函数外声明数组,因此它在函数内没有任何作用域。要么将数组声明为全局变量,要么将数组传递给函数。我更喜欢后者。
你忘了写
global $urls;
放在showMenu函数的顶部。
function showMenu()
{
global $urls;
$top = count($urls);
...