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

PHP函数无法识别全局变量$word的问题求助

解决PHP函数无法识别全局数组$word的问题

问题分析

函数lang_base无法识别全局变量$word,即便使用global关键字也无效,核心原因可能是全局变量作用域的使用不当,或者全局变量本身未被正确初始化。

解决方案

方案1:正确使用global关键字

确保在函数内部显式声明要使用的全局变量,且声明语句放在函数逻辑的最开头:

修改find.php中的lang_base函数:

function lang_base($lang,$id_base){
    global $word; // 声明使用全局变量$word
    foreach($word as $item){ // 改用foreach遍历更简洁高效
        if($item['key'] == $id_base){
            echo $item[$lang];
            break;
        }
    }
}

方案2:将$word作为参数传递(推荐)

避免依赖全局变量,直接将$word数组作为参数传入函数,这是更规范的代码写法,降低耦合度:

  1. 修改find.php的函数:
function lang_base($lang,$id_base, $word){
    foreach($word as $item){
        if($item['key'] == $id_base){
            echo $item[$lang];
            break;
        }
    }
}
  1. 修改main.php的调用代码:
<?php
require_once("find.php");
lang_base('ru','123', $word); // 传入$word数组
?>

方案3:封装成类(更易维护)

将翻译逻辑封装到类中,通过实例属性存储$word数组,彻底避免全局变量问题,同时便于后续扩展:

  1. 重构find.php为类:
<?php
require("config/connect_bd.php");

class Translator {
    private $wordList = [];

    public function __construct() {
        $query = "SELECT * FROM `translate` WHERE 1";
        $result = mysqli_query($con, $query);
        foreach($result as $row){
            $this->wordList[] = [
                'key' => $row['id'],
                'ru' => $row['ru'],
                'en' => $row['en'],
                'kz' => $row['kz']
            ];
        }
    }

    public function getTranslation($lang, $id) {
        foreach($this->wordList as $item){
            if($item['key'] == $id){
                echo $item[$lang];
                break;
            }
        }
    }
}

// 初始化翻译器实例
$translator = new Translator();
?>
  1. 修改main.php调用:
<?php
require_once("find.php");
$translator->getTranslation('ru','123');
?>

额外检查点

如果上述方案仍未解决问题,需要排查:

  • 确认mysqli_query($con, $query)是否返回有效结果,避免$word为空数组
  • 检查find.php中的$word变量是否确实处于全局作用域(没有被嵌套在其他函数或代码块内)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:30:51