在函数之间共享变量 [duplicate]

Sharing variables between functions [duplicate]

提问人:Lori 提问时间:11/13/2014 更新时间:11/13/2014 访问量:224

问:

我需要根据用户的状态显示不同的措辞。我意识到 while() 变量超出了 Online_Status() 的范围,但我无法弄清楚如何共享变量,甚至在 Online_Status() 中定义与 while() 相同的信息的新变量。我试过将 Online_Status() 放入 while()、围绕 while()、在 while() 之外以及所有其他配置中数小时。没有发生。我将不胜感激!

<?php

require_once('connect.php');


$con = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME) or die('Connection failed: ' . mysqli_connect_error());

$sql = mysqli_query($con, "SELECT UserType, Online, InChat FROM membership WHERE UserType = 2 ORDER BY Online DESC");


    while($row = mysqli_fetch_array($sql)){

    $UserType = $row['UserType'];
    $Online = $row['Online'];
    $InChat = $row['InChat'];


    echo Online_Status(); 


    }

    function Online_Status(){ 

        if ($Online == 0) {
            echo "I am not online. Please come back later";
        }

        else if($Online == 1 && $InChat == 0){
            echo "I am Online and I will be in my chatroom shortly.";
        }

        else if($Online == 1 && $InChat == 1){
            echo "I am Online chat with me now!";
        }

}

mysqli_close($con);
?> 
php mysql 函数 while-loop

评论


答:

2赞 Ali MasudianPour 11/13/2014 #1

使用关键字:global

function Online_Status(){ 
    global $Online;
    if ($Online == 0) {
        echo "I am not online. Please come back later";
    }

}

最好通过函数参数将变量传递给函数:

function Online_Status($Online){ 
    if ($Online == 0) {
        echo "I am not online. Please come back later";
    }
}

并称其为:

Online_Status($Online);

另外,看看 的 变量作用域PHP

评论

1赞 DaOgre 11/13/2014
使用全局变量通常被视为一种不好的做法,但这是一个有争议的问题,如果不学习将参数传递到你的方法中,你将无法在 PHP 中做很多事情,所以我强烈建议使用 Ali 在这里建议的第二种实现
0赞 Lori 11/13/2014
正是我想要的,谢谢。我快到了,我敢肯定我尝试了所有方法。我现在就试试。