[英]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.