簡體   English   中英

php函數變量范圍

[英]php function variable scope

我想知道我是否有這樣的功能:

function isAdmin ($user_id) {

    $admin_arr = array(1, 2);

    foreach ($admin_arr as $value) {

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

    return false;
}

我可以在該函數之外創建一個數組作為全局數組,並在函數內部使用它而不將其作為參數發送,而是在函數中聲明一個新的管理數組,就像我剛剛在上面做的那樣? 我該怎么辦?

此致,亞歷山大

回答文字問題:

// 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

回答真正的問題:不惜一切代價避免全球化。 您在應用程序中引入了大量容易出錯的代碼。 依賴於全局變量正在進入一個痛苦的世界,並使您的功能變得不那么有用。

除非你絕對沒有別的辦法,否則要避免它。

你必須使用global關鍵字

這是一個例子

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

我同意其他人認為這不是首選方法,你應該將數組作為參數傳遞,但我只是想指出$GLOBALS[]超全局數組,我發現它比global關鍵字更具可讀性。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM