php函数变量范围

时间:2011-05-06 13:20:17

标签: php

我想知道我是否有这样的功能:

function isAdmin ($user_id) {

    $admin_arr = array(1, 2);

    foreach ($admin_arr as $value) {

        if ($value == $user_id) {
            return true;
        }
    }

    return false;
}

我可以在该函数之外创建一个数组作为全局数组并在函数内部使用它而不将其作为参数发送,而是在函数中声明一个新的管理数组,就像我上面所做的那样?我该怎么办?

此致 亚历山大

3 个答案:

答案 0 :(得分:12)

回答文字问题:

// Global variable
$admin_arr = array(1, 2);

function isAdmin ($user_id) {

    // Declare global
    global $admin_arr;

    foreach ($admin_arr as $value) {

        if ($value == $user_id) {
            return true;
        }
    }

return false;
}

此处的文档:http://php.net/manual/en/language.variables.scope.php

回答真实问题:不惜一切代价避免全球化。您在应用程序中引入了大量容易出错的代码。依赖于全局变量正在进入痛苦的世界,并使您的功能变得不那么有用。

除非你绝对没有别的办法,否则不要这样做。

答案 1 :(得分:1)

你必须使用全局关键字

这里有一个例子

$arr = array('bar');
function foo() {
    global $arr;
    echo array_pop($arr);
}
foo();

答案 2 :(得分:1)

我同意其他人认为这不是首选方法,你应该将数组作为参数传递,但我只想指出$GLOBALS[]超全局数组,我发现它更具可读性而不是global关键字。

$global_array = array(1,2,3);

function myfunc()
{
  echo $GLOBALS['global_array'][0];
  print_r($GLOBALS['global_array']);
}