Php 为什么$-字符串在函数()中不起作用
我读了很多关于这方面的书,找到了一些很好的答案并解决了我的问题。但我还是不明白为什么Php 为什么$-字符串在函数()中不起作用,php,string,function,if-statement,Php,String,Function,If Statement,我读了很多关于这方面的书,找到了一些很好的答案并解决了我的问题。但我还是不明白为什么 \u check.php包含在每个页面上,用于检查一些事情,包括是否有人登录。 经过大量检查(if/elseif/else)后,它以以下内容结束: {$chklogin = 'yes'} else {$chklogin = 'no';} 当我在页面上显示这个字符串($chklogin)时,它可以完美地工作。。。支票和$chklogin中缺少的任何内容都显示否。只有当所有支票都正常时,才会显示是。 当我把这个字
\u check.php
包含在每个页面上,用于检查一些事情,包括是否有人登录。
经过大量检查(if/elseif/else)后,它以以下内容结束:
{$chklogin = 'yes'} else {$chklogin = 'no';}
当我在页面上显示这个字符串($chklogin)时,它可以完美地工作。。。支票和$chklogin中缺少的任何内容都显示否。只有当所有支票都正常时,才会显示是。
当我把这个字符串放入函数中
function login() {
if($chklogin == 'yes') {return 'J';} else {return 'N';}}
$chklogin
仍然是yes,调用函数login()
返回N
。
我通过将$chklogin
放在$\u会话中解决了这个问题
function login() {
if($_SESSION['chklogin'] == 'yes') {return 'J';} else {return 'N';}}
现在,$chklogin
和$\u会话['chklogin']
都有相同的结果
有谁能告诉我为什么第一个函数不起作用(带有$chklogin
的函数),我很想知道我做错了什么
编辑:thanx很多人,我还是不太明白,但你让我走上了正确的学习道路。已经阅读了有关全局变量的更多信息,并将值作为参数传递。
我想我的问题得到了回答,再次感谢 这与范围界定有关。在函数中,$chklogin
指的是一个局部变量,该变量仅在函数内部可见,并且恰好与全局变量同名
试试这个:
function login()
{
global $chklogin; # use the global variable instead of a local one
if($_SESSION['chklogin'] == 'yes')
{
return 'J';
}
else
{
return 'N';
}
}
您可以使用TURNARY运算符请用编程语言标记您的问题请阅读有关变量范围
-请不要全局
。。。。为什么不建议将该值作为参数传递给函数呢?因为我正试图回答OP的问题。不过,这一点很好。现在OP可以去查找最佳实践,以避免global
。
$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';