okovalev
@okovalev

Глобальные и локальные переменные в процедурном стиле. Почему не работает?

function TmpCallTracking() {
    $utm_source = $_GET['utm_source'];
    $phone = '78122411466';

    if (isset($_COOKIE['phone'])) {
        $phone = $_COOKIE['phone'];
    }
    
    if ($utm_source == 'yandex'){
        setcookie('phone','78121234567',time() + (60 * 60 * 24 * 30));
        $phone = '78121234567';
    }
    return $phone;
}

$phone = '+' . TmpCallTracking();
$formatPhone = substr($phone, 0, 2).' ('.substr($phone,2,3).') '.substr($phone,5,3).'-'.substr($phone,8,2).'-'.substr($phone,10,2);

function getMenu() {
 return '<ul><li><a href="tel: ' . $phone . '" class="dropdown-toggle"><i class="menu-icons-style radius-x fa fa-phone"></i> ' . $formatPhone . '</a></li></ul>';
}


Почему $phone и $formatPhone не отрабатывает?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 3
DevMan
@DevMan
так откуда им быть в getMenu то?
php.net/manual/ru/language.variables.scope.php
Ответ написан
Комментировать
shahob
@shahob
Программист
Потому что это разные области видимости, подробнее здесь

Можно либо так
$phone = 79999999999;
$getPhone = function () use ($phone) {
 return $phone;
};

echo $getPhone();


Либо так:
function getPhone($phone) {
    return $phone;
}
echo getPhone($phone);


Ну или так:
function getPhone() {
    global $phone;
    return $phone;
}
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
function getMenu() {
    global $phone;
    global $formatPhone;
    return '<ul><li><a href="tel: ' . $phone . '" class="dropdown-toggle"><i class="menu-icons-style radius-x fa fa-phone"></i> ' . $formatPhone . '</a></li></ul>';
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы