Ошибка глобальной переменной PHP при вызове функции - PullRequest
0 голосов
/ 25 октября 2018

У меня есть следующая функция:

<?php

function deffunc($param1, $param2)
{
    global $var1;
    $var1 = "firstvar";
    echo $param1;
    echo "\n";
    echo $param2;
}

$var2 = "secondvar";

deffunc($var1, $var2);

?>

Вызов функции вернет «неопределенную переменную» для $ var1, но я не понимаю, почему она глобальна и определена внутри фигурных скобок функции.Однако, если я использую echo после вызова функции следующим образом:

deffunc($var1, $var2);
echo $var1;

, он вернет результат "firstvar".Я не понимаю, почему echo может читать эту глобальную переменную, установленную внутри функции, но если я вызываю функцию, я получаю ошибку «неопределенная переменная».

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Проблема в том, что $var1 не объявлен до функции.

Если мы посмотрим на эту страницу PHP: https://secure.php.net/manual/en/language.variables.scope.php, мы увидим, что их пример функции имеет $a и $b объявлены заранее.Ваш код должен быть написан так:

<code>$var1 = 'some string';

function foo()
{
    global $var1;
    return $var1;
}

# this will output some string
echo '<pre>. print_r(foo()) .'
'."\ П";

Причина, по которой это работает, заключается в том, что функция имеет локальную область видимости для себя.Если мы заранее объявим переменную, то она по-прежнему будет отсутствовать в функции без использования ключевого слова global.Используя это, вы получите переменные из массива $_GLOBALS, где varname ($var1) соответствует ключу $ _GLOBALS (var1)

0 голосов
/ 25 октября 2018

У вас проблема с объемом.$var1 доступно только внутри функции.Объявите $var2 вне функции, а затем вы можете использовать его в качестве параметра для отправки в функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...