我已经阅读了很多很多线索,但仍然无法绕过它.
这是我的基本问题:
header.PHP包含一个名为navigation.PHP的文件.在navigation.PHP中,定义了$prevIoUs和$next.使用echo语句我已经验证它们有值.
接下来,header.PHP包含一个名为backnext.PHP的文件.我需要backnext.PHP才能知道$prevIoUs和$next的值.如果我在backnext.PHP的顶部将它们声明为全局,我不会收到错误,但echo语句显示它们是空的.如果我不这样做,我会得到一个未定义的变量错误.
我究竟需要将它们声明为全局,以使backnext.PHP能够正确读取它们的值?
如果这些文件都没有函数或类,则$prev和$next在全局范围内,并且应该被所有包含文件看到,并且您不需要使用global关键字.
听起来你的包含顺序可能有点不对劲.
更新:
如果我理解正确你有这样的事情:
<?PHP echo "In header.PHP\n"; require_once("navigation.PHP"); require_once("backnext.PHP"); echo "Also seen in header.PHP:\n"; echo "prev=$prev\n"; echo "next=$next\n"; ?>
navigation.PHP:
<?PHP echo "In navigation.PHP\n"; $prev = "Hello World#1"; $next = "Hello World#2"; echo "Exiting navigation.PHP\n"; ?>
backnext.PHP:
<?PHP echo "In backnext.PHP\n"; echo "prev=$prev\n"; echo "next=$next\n"; echo "Exiting backnext.PHP\n"; ?>
如果我运行这个我得到:
In header.PHP In navigation.PHP Exiting navigation.PHP In backnext.PHP prev=Hello World#1 next=Hello World#2 Exiting backnext.PHP Also seen in header.ph prev=Hello World#1 next=Hello World#2
backnext.PHP能够看到$prev和$next.