我正在尝试编写一个函数来使用MYsql数据库中的值生成导航菜单。我有所有的值,并已将它们存储在数组中,我已经测试了部分代码的foreach循环,但如果我尝试将它放在一个函数中,它会破坏吗?我在文档中搜索过一个答案,并且已经看到一些关于函数外部使用的变量/数组的东西不允许在函数内使用但是当我改变它并使用不同的变量时,一切都会中断。有人可以对此有所了解吗?
以下代码:
这有效:
<?php
foreach($pageWithNoChildren as $arrayofpageinformation) {
echo "<a href=" . $arrayofpageinformation['url'] . ">" . $arrayofpageinformation['linklabel'] . "</a></br>";
}
?>
但这不是
<?php
function buildMenu(){
foreach($pageWithNoChildren as $arrayofpageinformation) {
echo "<a href=" . $arrayofpageinformation['url'] . ">" . $arrayofpageinformation['linklabel'] . "</a></br>";
}
};
?>
<?php buildMenu(); ?>
这也不是
<?php
function buildMenu($pageWithNoChildren){
foreach($pageWithNoChildren as $arrayofpageinformation) {
echo "<a href=" . $arrayofpageinformation['url'] . ">" . $arrayofpageinformation['linklabel'] . "</a></br>";
}
};
?>
<?php buildMenu(); ?>
或者
<?php
function buildMenu($items){
foreach($items as $item) {
echo "<a href=" . $item['url'] . ">" . $item['linklabel'] . "</a></br>";
}
};
?>
<?php buildMenu($pageWithNoChildren); ?>
答案 0 :(得分:0)
对于函数,如果变量不是全局变量或未设置为参数,则函数将无法访问它,因为函数具有局部范围。
第二个不起作用,因为变量既不是全局变量也不是作为函数的参数发送。您可以将其更改为:
<?php
function buildMenu(){
global $pageWithNoChildren;
foreach($pageWithNoChildren as $arrayofpageinformation) {
echo "<a href=" . $arrayofpageinformation['url'] . ">" . $arrayofpageinformation['linklabel'] . "</a></br>";
}
};
?>
<?php buildMenu(); ?>
这告诉函数使用 global 而不是 local 范围来访问变量。
您也可以将其更改为第四个示例,因为该示例应该有效。
答案 1 :(得分:0)
关于三个非工作区块,
1)参数未在函数和调用期间传递。
2)在调用期间未传递参数。
3)它正在工作!再次检查按键。