Используйте global, чтобы получить переменную из родительской функции (function in function)

0

У меня есть функция в PHP:

function myfunction() {
    $content = "somecontent";
    function secondfunction() {
       global $content;
       echo $content;
    }
    secondfunction();
}

global не работает. Зачем?

Искал много, но не нашел решения.

Большое спасибо!

  • 2
    Что значит «глобальный не работает» в деталях? Где в вашем коде определен global $content , включен ли этот кусок? Что вы ожидаете от global , и где он ведет себя иначе?
  • 1
    Вы понимаете, что они не являются «вложенными» функциями. Они обе являются просто независимыми функциями в глобальной области видимости .... единственное отличие от определения их обоих по отдельности заключается в том, что secondfunction () будет определяться только тогда, когда myfunction () фактически вызывается
Показать ещё 1 комментарий
Теги:

2 ответа

4
Лучший ответ

Чтобы получить доступ к переменной GLOBAL в php, вы должны сначала определить ее верхний уровень для доступа к ней на любом уровне. Измените свой код и определите global в myfunction() как:

function myfunction() {
    global $content;
    $content = "somecontent";
    function secondfunction() {
       global $content;
       echo $content;
    }
    secondfunction();
}
  • 0
    Спасибо Нуман Аршад за ваш ответ.
  • 0
    Добро пожаловать @MMPP :)
0

Способ 1:

function myfunction() {
    $content = "somecontent";
    function secondfunction($content) {
       echo $content;
    }
    secondfunction($content);
}

Способ 2:

function myfunction() {
    $content = "somecontent";
    $secondfunction = function() use ($content) {
       echo $content;
    };
    $secondfunction();
}

Вы должны также проверить ответ Нумана Аршада.

  • 0
    Спасибо за помощь мне. Пробовал, оба работают хорошо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню