首页 > 解决方案 > 尽管“全局”,php在函数中没有变量

问题描述

我有一个问题,我的 PHP 代码中有一个匿名函数,我必须str_replace使用两个变量$user_id$first_name. 当我打电话时$user_id它们$first_name是空白的,但是如果我在功能之外使用它,它们就可以工作。我使用“全球”。"$database" 有效。

$getTrans = function($lang, $identifier)
{
    global $database, $username, $user_id, $first_name;
    $mammt = $database->prepare("SELECT * FROM translations WHERE language=? AND code=?");
    $mammt->execute([$lang, $identifier]);
    $trans = $mammt->fetch(PDO::FETCH_ASSOC)['translation'];
    if($trans == NULL){
        $mammt->execute(['italian', $identifier]);
        $trans = $mammt->fetch(PDO::FETCH_ASSOC)['translation'];
    }
    return str_replace(['\n', "{MENTION}"], ["\n", "<a href='tg://user?id=$user_id'>$first_name</a>"], $trans);
};

变量 user_id 的声明:

if (isset($update['message']['from_id'])){
    $user_id = $update['message']['from_id'];
}

如果我做

回声 $user_id;

我得到了 user_id,与 first_name 相同。

解决了这个问题。感谢 RiggsFolly。现在代码是这样的:

$getTrans = function($lang, $identifier) use (&$message, &$username, &$user_id, &$first_name)

标签: phpfunctionvariablesglobal

解决方案


感谢 RiggsFolly。这是我的问题的解决方案:

$getTrans = function($lang, $identifier) 使用 (&$message, &$username, &$user_id, &$first_name)


推荐阅读