You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何在函数内部访问并使用全局数组中的对应值

问题原因说明

  1. 作用域限制:PHP函数默认拥有独立的作用域,未做特殊声明时,无法直接访问全局作用域中定义的$users、$userName、$userPass变量
  2. $GLOBALS语法错误:你使用的嵌套引用写法不符合PHP数组取值规则,不能将$GLOBALS调用直接嵌套在另一个$GLOBALS的键名字符串中
  3. 原有代码语法疏漏:$userName = "Alejandro"行末尾缺少分号,checkUser函数缺少闭合的右大括号,同时$UserPass变量名首字母大写,调用时需注意大小写匹配

解决方法

方法1:正确使用$GLOBALS取值

$GLOBALS是PHP的超全局数组,键为全局变量的名称,需要分层取值:

$users = ["admin" => "admin","Alejandro" => "8345245"];
$userName = "Alejandro";
$userPass = "8345245"; // 统一变量名大小写
function checkUser(){
    if($GLOBALS['users'][$GLOBALS['userName']] == $GLOBALS['userPass']){
        return "The password is good";
    }
    return "The password is wrong";
}

方法2:使用global关键字声明全局变量(写法更简洁)

在函数内部提前声明需要用到的全局变量,即可直接调用:

$users = ["admin" => "admin","Alejandro" => "8345245"];
$userName = "Alejandro";
$userPass = "8345245";
function checkUser(){
    global $users, $userName, $userPass;
    if($users[$userName] == $userPass){
        return "The password is good";
    }
    return "The password is wrong";
}

方法3:参数传值(更推荐,避免全局变量污染)

不依赖全局变量,将需要用到的值通过参数传入函数,降低代码耦合度:

$users = ["admin" => "admin","Alejandro" => "8345245"];
$userName = "Alejandro";
$userPass = "8345245";
function checkUser($users, $userName, $userPass){
    if($users[$userName] == $userPass){
        return "The password is good";
    }
    return "The password is wrong";
}
// 调用时传入对应参数即可
echo checkUser($users, $userName, $userPass);

内容的提问来源于stack exchange,提问作者AB_programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:18:02