Stasgar
@Stasgar
Обученная макака

PHP функция не видит внешнюю переменную?

Простой код:
<?php 
$nameErr = $emailErr = $genderErr = "";

function checkDone()
{
if($nameErr == "")
{return "true";}
else
{return "false";}
}
echo checkDone();
?>

Возвращает он это:
Notice: Undefined variable: nameErr in E:\Desktop\Server\data\htdocs\simple-site\index.html on line 15
true


т.е. функция как-бы выполняется, но перед выполнением выводится эта ошибка, мол нет такой переменной. Если например сделать условие таким:
if($nameErr == "2")
То выведет то-же самое, но с false. В чем мяготка?
isset что-то не помог.
  • Вопрос задан
  • 7523 просмотра
Решения вопроса 3
Глобальные переменные --- зло. Не используйте их даже под страхом расстрела.

Либо используйте ключевое слово "global":
<?php 
$nameErr = $emailErr = $genderErr = "";

function checkDone()
{
    global $nameErr;

    if ($nameErr == "") {
        return "true";
    } else {
        return "false";
    }
}

echo checkDone();


Либо передавайте переменную для проверки через аргументы функции. См. решение от Макс

P.S.
Сейчас 21-й век. Закрывающих тег ("?>") не нужен
Ответ написан
AloneCoder
@AloneCoder
[object Object]
$nameErr = $emailErr = $genderErr = "";

function checkDone($nameErr)
{
if($nameErr == "")
{return "true";}
else
{return "false";}
}
echo checkDone($nameErr);
Ответ написан
Комментировать
artem90
@artem90
TeamLead, Developer
У функции своя область видимости и она не видит внешние пользовательские переменные.
Для доступа к переменной Вам надо передать ее в качестве аргумента:
function checkDone($myVar) {
   var_dump($myVar);
}

$myVarOutside = 100;
checkDone($myVarOutsite);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
www.php.su/learnphp/vars/?glvars
Вы global потеряли
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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