尽管“全局”,php仍无法获得函数变量

问题描述 投票:-1回答:1

我有一个问题,我的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'];
}

如果我做

echo $ user_id;

我得到user_id,first_name也一样。

修正了。感谢RiggsFolly。现在代码是这样的:

$getTrans = function($lang, $identifier) use (&$message, &$username, &$user_id, &$first_name)
php function variables global
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.