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

时间:2013-05-29 09:05:12

标签: php string function if-statement

我已经阅读了很多关于此的内容,找到了一些不错的答案并解决了我的问题。但我仍然不明白原因。

每页都会包含

_check.php以检查某些内容,包括是否有人登录。 经过大量的检查(if / elseif / else)后,它以:

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

当我在页面上显示这个字符串($ chklogin)时,它完美地运行...检查中缺少任何内容,$ chklogin显示no。只有当所有检查都没问题时才显示是。 当我把这个字符串放在一个函数中时......

 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';}}

现在$chklogin$_SESSION['chklogin']都有相同的结果。

任何人都可以告诉我为什么第一个函数不起作用($chklogin),我真的很想知道我做错了什么。

编辑:对于很多人来说,我还是完全不明白,但是你已经把我送上了正确的学习之路。已经阅读了更多关于全局变量并将值作为参数传递。 我的问题得到了回答,再次感谢!

2 个答案:

答案 0 :(得分:1)

与范围有关。在您的函数内部,$chklogin指的是本地变量,该变量仅在 函数内可见,并且恰好与 global <同名< / em>变量$chklogin

试试这个:

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

答案 1 :(得分:0)

$variable = ($_SESSION['chklogin'] == 'yes') ? 'J' : 'N';

您可以使用TERNARY运算符