在PHP中定义变量有困难吗?
好的,内容页使用以下内容:在PHP中定义变量有困难吗?,php,variables,Php,Variables,好的,内容页使用以下内容: $tab = "Friends"; $title = "User Profile"; include '(the header file, with nav)'; 标题页的代码如下: if ($tab == "Friends") { echo '<li id="current">'; } else { echo '<li>'; } if($tab==“朋友”){ echo'; }否则{ 回音“”; } 问题是,if$tab==F
$tab = "Friends";
$title = "User Profile";
include '(the header file, with nav)';
标题页的代码如下:
if ($tab == "Friends") {
echo '<li id="current">';
} else {
echo '<li>';
}
if($tab==“朋友”){
echo';
}否则{
回音“ ”;
}
问题是,if$tab==Friends
条件从未激活,并且没有其他变量从内容页带到标题页
有人知道我做错了什么吗
更新:
好的,当我使用。/scripts/filename.php
时,这个问题似乎消失了,并且只在我使用完整的URL时出现
你知道为什么吗?你发布的代码应该可以工作。你是怎么把那个文件包括进去的?这会发生在函数内部吗?然后需要使用
global
语句才能使其工作。例如:
文件1:
function my_include($file) {
global $tab; // <-- add this
include '/some/path/' . $file;
}
$tab = 'Friends';
my_inlcude('file_2.php');
您发布的代码应该可以工作。你是怎么把那个文件包括进去的?这会发生在函数内部吗?然后需要使用
global
语句才能使其工作。例如:
文件1:
function my_include($file) {
global $tab; // <-- add this
include '/some/path/' . $file;
}
$tab = 'Friends';
my_inlcude('file_2.php');
当您
包含一个完整的URL时,您没有包含PHP脚本,而是包含它生成的HTML。就像你去了http://wherever.your.url.goes
,但这是由服务器而不是浏览器完成的。脚本在一个完全独立的进程中运行,这是由服务器向自身发出的一个单独的请求引起的,并且$variable
在两者之间不共享
短版本:当您包含http://wherever.your.url.goes
,$tab
将始终为空。如果包含实际的文件名,变量将被共享。当包含完整的URL时,您不包括PHP脚本,而是包括它生成的HTML。就像你去了http://wherever.your.url.goes
,但这是由服务器而不是浏览器完成的。脚本在一个完全独立的进程中运行,这是由服务器向自身发出的一个单独的请求引起的,并且$variable
在两者之间不共享
短版本:当您包含http://wherever.your.url.goes
,$tab
将始终为空。如果您包含实际的文件名,变量将被共享。非常确定在您的include中的某个地方您正在重新定义$tab
。当您执行var\u dump($tab)时会发生什么;在头文件中?$tab为空,我尝试了。我没有重新定义它,当我更改include url时,问题已经解决了。非常确定在你的include中的某个地方你正在重新定义$tab
。当你做var_dump($tab)时会发生什么;在头文件中?$tab为空,我尝试了。我没有重新定义它,当我更改包含url时,问题已经解决了。是的,这会解决它,我决定改为使用相对url,所以它是可移植的。谢谢如果时间允许,我会把它标记为最好的。@Jake然而,使用绝对路径总是首选。但是,当然是绝对的文件系统路径,而不是虚拟的URL。我是否忽略了什么?为什么会有一个函数?@Col.Shrapnel:一个函数可以解释为什么OP的代码不起作用。因为,如前所述,OP的代码应该可以正常工作。包含的文件继承包含所在行的范围。所以,我的猜测是OP使用的实际代码中有一个函数调用,而不仅仅是一个普通的包含在变量赋值的相同范围内。我懂了。很棒的编程技术。是的,这会解决它,我决定用相对URL代替这个网站,所以它是可移植的。谢谢如果时间允许,我会把它标记为最好的。@Jake然而,使用绝对路径总是首选。但是,当然是绝对的文件系统路径,而不是虚拟的URL。我是否忽略了什么?为什么会有一个函数?@Col.Shrapnel:一个函数可以解释为什么OP的代码不起作用。因为,如前所述,OP的代码应该可以正常工作。包含的文件继承包含所在行的范围。所以,我的猜测是OP使用的实际代码中有一个函数调用,而不仅仅是一个普通的包含在变量赋值的相同范围内。我懂了。很棒的编程技巧。令人惊讶的是,我知道include是如何工作的,问题是我没有意识到$tab必须设置为global。谢谢你不必要的鲁莽回答。令人惊讶的是,我知道include是如何工作的,问题是我没有意识到$tab必须设置为global。不过谢谢你不必要的鲁莽回答。