2009-12-04 6 views
1

У меня возникли проблемы с получением функции внутри функции, работающей, как вы думаете, что у меня есть ниже, это точно? Я не получаю ожидаемых результатов, если бы вы могли пролить свет на функции внутри функций, которые я бы оценил.Функция внутри функции в PHP

благодаря

function test1() 

{ 

    global x; 

    $x=123; 

    function test2() 
    { 
    echo $x; 
    } 

    test2(); 

} 
+2

Каков ваш ожидаемый результат? Эта конструкция вряд ли имеет смысл. Для чего тебе это? –

ответ

3

Работает, но область действия test2() ограничена. Например, это работает:

[[email protected] ~]$ cat y.php 
<?php 
function test1() 
{ 
     global $x; 
     $x=123; 

     function test2() 
     { 
       global $x; 
       echo $x; 
     } 

     test2(); 
} 

test1(); 
?> 
[[email protected] ~]$ php -f y.php 
123[[email protected] ~]$ 
+0

wallyk благодарит вас за понимание, это действительно работает сейчас. можете ли вы объяснить, почему требуется, чтобы x был повторно объявлен как глобальный во второй функции? – chicane

+0

Это так, что '$ x' можно увидеть вне соответствующих функций. Если '$ x = 123' были установлены вне' test1() ', не было бы необходимости в' test1() 'иметь' global $ x'. – wallyk

0

Разве вы не можете просто включить его в другую функцию вне первой функции (test1)? У меня возникли проблемы с изображением прецедента.

0

Вы не вызываете функцию test2, поэтому нет причин для ее эха $ x.

Кроме того, вы должны построить функцию снаружи, в этом случае нет добавленной стоимости.

Смежные вопросы