是否可以在PHP中的函数内部创建变量全局?

问题描述:

I'm trying to make a function that returns the id number of a certain user, but I can't access a variable that I declared in the function when I'm calling the function.

function loadlink($users){

    global $database, $rowz, $results;
    $results = $database->query("SELECT * FROM users WHERE username = '{$users}'");
    $rowz = $results->fetch_all(MYSQLI_ASSOC);
    var_dump( $rowz); //returns basic array info
}

var_dump( $rowz); //returns "NULL"
loadlink('RandomUser');

var_dump( $rowz); returns the array info if I call loadlink() first, but the thing is that I want to use the $rowz variable when calling loadlink() to access a property of the returned associative array, but it doesn't return anything.

You should really return from your function what you need it to return and not use global variables for that.

But yes, it is possible using the $GLOBALS array although you would need to call your function first before you can access the variables you set in it:

function loadlink($users){
    global $database;

    $GLOBALS['results'] = $database->query("SELECT * FROM users WHERE username = '{$users}'");
    $GLOBALS['rowz'] = $results->fetch_all(MYSQLI_ASSOC);
}

// run function first to initialize the necessary variables
loadlink('RandomUser');
var_dump($rowz); //returns basic array info