PHP не получает переменную в функции, несмотря на "глобальный" - PullRequest
0 голосов
/ 31 января 2019

У меня проблема, у меня есть анонимная функция в моем коде 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)

1 Ответ

0 голосов
/ 31 января 2019

Благодаря RiggsFolly.Это решение моей проблемы:

$ getTrans = функция ($ lang, $ идентификатор) использовать (& $ message, & $ username, & $ user_id, & $ first_name)

...