Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wywołanie zmiennej globalnej w zagnieżdżonej funkcji?
Forum PHP.pl > Forum > Przedszkole
siemieng
witam, mam taki problem:

  1. <?php
  2. function external($var)
  3. {
  4.    
  5.     function internal()
  6.     {
  7.         global $var;
  8.         echo $var;
  9.     }
  10. }
  11.  
  12. external('value');
  13. ?>


Pytanie dotyczy próby utworzenia zmiennej globalnej i uzyskania dostępu do niej z poziomu funkcji wewnętrznej, zakładając, że ta zmienna jest przekazywana jako argument funkcji zewnętrznej- jak to zrobić i czy się da?questionmark.gif?

Wiem, że w sytuacji gdy zmienna tworzona jest poza obiema funkcjami, następnie deklarowana jako globalna po kolei w każdej z nich działa, lub rozbicie funkcji na dwie osobne (równorzędne), też działa, ale proszę o podpowiedź do dej opisanej sytuacji, z góry dzięki winksmiley.jpg
nospor
po pierwsze kod ci nie zadziala tak jak chcesz, bo nigdzie nie wywolujesz internal().
po drugie: global dotyczy globali a nie parametrow funkcji. Mozesz od biedy przekazac do inernal jako parametr:
  1. <?php
  2. function external($var)
  3. {
  4.    
  5.    function internal($var)
  6.    {
  7.        echo $var;
  8.    }
  9.    
  10.    internal($var);
  11. }
  12.  
  13. external('value');
  14. ?>
siemieng
Fakt, pominąłem wywołanie funkcji wewnętrznej, ale to tylko w tym przykładzie tongue.gif

Załapałem, że nie da się tak z parametrami, ale czy da się jakoś doprowadzić do działania coś takiego:
  1. <?php
  2. function external($var)
  3. {
  4.   $var2 = $var;
  5.  
  6.   function internal()
  7.   {
  8.      global $var2;
  9.       echo $var2;
  10.   }
  11.  
  12.   internal();
  13. }
  14.  
  15. external('value');
  16. ?>


W tym przypadku global nie dotyczy już parametru tylko zmiennej, czy się mylę??
nospor
global dziala na zmienne globalne. zmienna w funkcji nie jest globalna do czasu, az nie zrobisz z niej globalnej

  1. <?php
  2. function external($var)
  3. {
  4. global $var2;
  5. $var2 = $var;
  6.  
  7.  function internal()
  8.  {
  9.     global $var2;
  10.      echo $var2;
  11.  }
  12.  
  13.  internal();
  14. }
  15.  
  16. external('value');
  17. ?>

ps: po co ci wogole takie kombinowanie?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.