сделать PHP переменную или массив не существующими из функции, в которой они были установлены - PullRequest
0 голосов
/ 16 апреля 2011

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

function a() {
    $var = "variable";
    return $var;
}
function b() {
    $arr = array('a','r','r','a','y');
    return $arr;
}

И еще несколько PHP из этих функций.

$var = a();
$arr = b();
print_r($var);
print_r($arr);

$var и $arr определены в функциях, нозатем переопределяются за пределами функций.Как сделать так, чтобы переменные и массивы из функций были отделены от тех, которые есть в функциях, чтобы переменные и массивы в функции не существовали вне функции?

Ответы [ 2 ]

5 голосов
/ 16 апреля 2011

Функции имеют свою область видимости. Ваши переменные функции не существуют вне функции, если они не определены с помощью ключевого слова global. Вы можете запутать себя, используя одинаковые имена переменных как внутри, так и снаружи функций. Попробуйте изменить функцию vars на $fx_arr и $fx_var соответственно. Вы увидите, что они не существуют вне функций.

1 голос
/ 16 апреля 2011

Вам нужно прочитать более внимательно переменная область видимости в php

$var, объявленная в a(), видна только в области видимости a()'s.То же самое относится к $arr в b().

Этот фрагмент кода $var = a(); должен читаться следующим образом:

создать глобальную (для области документа) переменную $var и присвойте ему значение, возвращаемое a().перейдя к a(), мы имеем: создаем локальную (видимую только в области видимости функции) переменную $var и присваиваем 'variable' в качестве значения, затем возвращаем значение $var.

В конце вы закончилис двумя переменными с одинаковыми именами, но с разными областями видимости, они не перекрывают / перезаписывают друг друга из-за этого.

Также верно и обратное, глобальные переменные не видны в областях действия функций.Вам нужно использовать глобальный оператор, чтобы сделать их (импортировать) видимыми в области функций.

Надеюсь, что это поможет вам.:)

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