Область видимости и XML-функции

MU

Guest
Область видимости и XML-функции

В данном примере ф-ия Main должна возвращать массив, который заполняет внутренняя ее функция Sub. И хотя в ф-ции Sub() массив я объявил как глобальный, после ее отработки, в нем ничего не будет содержаться. Также ничего не произойдет, если изменять массив через $GLOBALS.
Если же массив передавать по ссылке в ф-ию, как Sub( &$Arr ), то конечно все будет работать, но есть ограничение на параметры этой ф-ии, т.е. так сделать уже нельзя. В данном случае Sub() не должна иметь никаких параметров.

Примером таких "жестких" функций могут быть функции:
StartTag(...) и EndTag(...)
в
int xml_set_element_handler ("StartTag", "EndTag");
где они должны иметь определенное кол-во параметров

PHP:
function Main()
  {
    $Arr = array();
    
    function Sub()
    {
      global $Arr;
      for ( $i = 0; $i < 5; $i++ )
        $Arr[$i] = $i;
      printf("Sub: Размер  = %d<BR>", count($Arr));// = 5 
    }
    Sub();
    printf("Main: Размер  = %d<BR>", count($Arr));// = 0 хАчу 5!
    return $Arr;
  }// end Main()
  
  $A = Main();
  
  printf("GLOBAL: Размер  = %d<BR>",   count($A));// = 0 и тут хочу этого не меньше
 

Frol

Новичок
какие параметры?
какие значения по ссылке?
какие ограничения?

можно еще раз медленно и по-русски?
 

Мутник

Новичок
MU

в качестве оффтопа: а нельзя ли обойтись без функции в функции?
 

Мутник

Новичок
ecto

вот ты ему сказал почему у него не работает, а думаешь он понял почему???

он понял: "Потому что я там не написал global $Arr"


Ты оказываешь такими ответами медвежьи услуги человеку, он же сам думать должен!
 
Сверху