为什么$-string在function()中不起作用


Why Does a $-string not work in function()

我读了很多关于这方面的文章,找到了一些不错的答案并解决了我的问题。但我还是不明白为什么。

_check.php包含在每个页面上,用于检查某些内容,包括是否有人登录。经过大量检查(if/elseif/else(,它以结束

{$chklogin = 'yes'} else {$chklogin = 'no';}

当我在页面上显示这个字符串($chklogin(时,它工作得很好。。。支票和$chklogin中缺少的任何内容都显示no。只有当所有支票都正常时,它才会显示yes。当我把这个字符串放在函数中时。。。

 function login() {
 if($chklogin == 'yes') {return 'J';} else {return 'N';}}

$chklogin仍然为是,调用函数login()返回N。我通过把$chklogin放在$_SESSION。。。

function login() {
if($_SESSION['chklogin'] == 'yes') {return 'J';} else {return 'N';}}

现在CCD_ 7和CCD_。

有人能告诉我为什么第一个函数($chklogin的函数(不起作用吗?我真的很想知道我做错了什么。

编辑:很多人,我仍然不太明白,但你让我走上了正确的学习道路。已经阅读了更多关于全局变量的信息,并将该值作为参数传递。我想我的问题已经得到了回答,再次感谢!

这与作用域有关。在函数内部,$chklogin指的是一个局部变量,该变量仅在函数内部可见,恰好与全局变量$chklogin同名。

试试这个:

function login()
{
    global $chklogin; # use the global variable instead of a local one
    if($_SESSION['chklogin'] == 'yes') 
    {   
        return 'J';
    } 
    else 
    {
        return 'N';
    }
}
$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';

您可以使用TURNARY运算符