Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么$-字符串在函数()中不起作用_Php_String_Function_If Statement - Fatal编程技术网

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