无法访问 PHP 全局变量


Unable To Access PHP Global Variable

我正在尝试拉$nsfw全局变量,但它根本没有显示任何内容。如果我在函数中回显它,它可以工作。但在外部,即使定义为全局,它也失败了。请在这里帮助我。

 <?php    
    if(!function_exists('do_example_work'))
    {
        function do_example_work()
        {
            global $nsfw;
        include("includes/dbconnect.php");
// Create connection
$conn = new mysqli($DBHOST, $DBUSER, $DBPASS, $DBNAME);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "SELECT fieldname FROM table WHERE name='$anything'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        if ($row["fieldname"] == 1) {
            // do somethin
            $nsfw = 25;
            exit();
        } else {
            echo "enjoy";
        }
    }
} else {
    echo "0 results";
}
            }
        echo $nsfw;
};

?>

有支持和反对全局的争论。您可以搜索Stack和互联网并阅读:

  1. 全局变量在很多方面都是不好的,应尽可能避免
  2. 全局变量还不错,如果您知道自己是什么,则可以很好地/安全使用行为

手册:
http://php.net/manual/en/functions.user-defined.php

您似乎用这个基本的用户定义函数使事情过于复杂。

如果你想从函数获取数据,只需使用 return 语句

function do_example_work() {
  // Do some stuff here
  $nsfw = 25;
  return $nsfw; // Return where needed, in conditional statement or end of function
}
// Will echo "25"
echo do_example_work();

仅供参考:

要从外部将数据传入函数,只需将数据作为参数从外部传递到函数中:

function do_example_work($nsfw) {
/** The var "$nsfw" will have whatever data you pass in through the function call
 * You can use it as required - check if $nsfw == something
 * Or it might be database login details (urgh)
 */
echo $nsfw." - And words from in the function"; 
}
// Will echo "Pass in argument - And words from in the function"
do_example_work("Pass in argument");
变量

名称前面的关键字global表示变量是在函数外部的某个地方定义的,现在我想使用该变量。它不会生成全局变量。因此,您需要在函数外部定义变量,然后可以使用前面的 global 关键字在函数内使用该变量。在您的代码中,我看不到您在函数外部定义变量。你只是在代码的底部回显它。

方法中保留全局变量的任何具体原因?将其移出方法,它应该对您有用。

或尝试全局,如下所示。

function doit() { $GLOBALS['val'] = 'bar'; } doit(); echo $val;

给出的输出为:

酒吧

<?php 
foo(); 
bar(); 
function foo() { global $jabberwocky; $jabberwocky="test data<br>"; bar(); } function bar() { global $jabberwocky; echo $jabberwocky; } ?>