为什么我的PHP函数不产生任何输出?
下面的代码显示了一个多维数组,以及一个函数,该函数在数组中循环以回显带有链接的嵌套菜单 但是,该函数似乎不起作用,因为没有任何响应 这是工作,但我已经改变了一些包括周围,所以它可能是与此有关为什么我的PHP函数不产生任何输出?,php,arrays,function,multidimensional-array,echo,Php,Arrays,Function,Multidimensional Array,Echo,下面的代码显示了一个多维数组,以及一个函数,该函数在数组中循环以回显带有链接的嵌套菜单 但是,该函数似乎不起作用,因为没有任何响应 这是工作,但我已经改变了一些包括周围,所以它可能是与此有关 <?php $urls = array ( 0=>array ( 0=>"Home", 1=>"http://uni.michaelnorris.co.uk/", 2=>"Home", 3=>"",
<?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(); ?>
您试图从函数内部访问
$url
变量,这是不可能的。必须将数组传递到函数中,或让函数知道它是全局变量。以下是代码的修改版本,可以正常工作:
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); ?>
函数显示菜单($URL)
{
$top=count($url);
回声“”;
对于($i=0;$i)
我还修复了关闭时丢失的
/
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>";
}
功能显示菜单()
{
全球$URL;
$top=count($url);
回声“”;
对于($i=0;$i您还缺少结束列表元素上的斜杠:
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a><li>";
echo“”;
应该是:
echo "<li><a href='".$urls[$i][1]."' title='".$urls[$i][2]."'>".$urls[$i][0]."</a></li>";
echo“”;
您在函数外声明数组,因此它在函数内没有任何作用域。要么将数组声明为全局数组,要么将数组传递给函数。我更喜欢后者。URL在函数showMenu的作用域外定义,因此它不知道该函数存在。您可以使用全局方法要将其引入:
function showMenu() {
global $urls;
[...]
}
也可以将其作为变量传递:
$urls = array();
function showMenu($urls) {
[...]
}
showMenu($urls);
或者您可以在函数本身中定义$URL
此外,您可能有兴趣知道不必显式地对数组进行编号。您可以更轻松地将其键入:
$urls = array(
array()
,array()
,array()
);
你忘了放
global $urls;
在showMenu功能的顶部
function showMenu()
{
global $urls;
$top = count($urls);
...
你收到错误了吗?输出不正确吗?我的水晶球目前正在修复。我看不出你的代码有任何固有的错误。哇……那不应该被过滤吗?只有代码,没有文本。你希望发生什么?现在发生了什么?错误报告(E_ALL);
=>注意:未定义变量:第81行x.php中的URL谢谢。这已经对它进行了排序,您能解释一下为什么它被修复了吗?@Mike:global$URL;
将根据现有的全局变量在函数的局部范围内重新声明$URL
。哦,在结尾处将
修复为
showMenu
,所以我不会将其包含在我的答案中。谢谢你,我甚至没有注意到缺少的/。你为什么更喜欢后者?有p吗性能提高?或者这只是个人的事情,将其解析为函数有什么好处吗?“软件中的全局变量通常是一个坏主意。它们可以神奇地将信息从程序中的一个地方传送到另一个地方,这种方式很难理解。因此,它们会导致微妙的错误,使维护变得困难,并杀死小猫。”。“-在需要和需要时使用它们,但这不仅仅是因为当有一种更为公认/标准的方法时,它将帮助你完成你想做的事情。像这样编写php函数会让你养成坏习惯。