PHP - Funktionen innerhalb von Funktionen

Benutzer-621

abgemeldet
20 April 2006
744
64
Moin,
habe nochn Prob, hat jemand ne Ahnung, warum beim unteren Code nichts ausgegeben wird? Is global zwingend, dort wo ichs angeben habe, um ein Resultat zu erhalten?

PHP:
  function aaa($str1, $str2)
    {
      $explode = explode($str1, $str2);

      function bbb()
        {
          global $explode;
          echo($explode[0]);
        }

      function ccc()
        {
          global $explode;
          echo($explode[1]);
        }

      function ddd()
        {
          global $explode;
          echo($explode[2]);
          //echo("test"); // <<< bei Aktivierung wird test ausgegeben
        }

    }

  aaa("x", "4fd65g4fd65gx6546564654x654654654654x654654654654x654x654x654x654654x654x654x654x654", "");
  bbb();
  ccc();
  ddd();

*edit*
hab nun global $explode bei aaa hinzugefügt und es geht, *lol*. Nun noch ne Frage, warum muss ich beidesmale global machen?
 
Zuletzt bearbeitet:
Naja ist doch klar, lässt du es weg, existiert $explode nur im lokalen Namespace von aaa(), nicht jedoch im globalen und somit hast du keine Chance, innerhalb von bbb() darauf zuzugreifen.

BTW halte ich Funktionen innerhalb von Funktionen für einen ziemlich abartigen Stil.
 
Man nehme

nach
PHP:
$explode = explode($str1, $str2);

noch ein
PHP:
global $explode;

herien und sehe und staune! :;)

und die funktionen innerhalb von funtion aaa(int,int) { } schreibste einfach ausserhalbr in etwa so:

PHP:
function aaa($str1, $str2) 
    { 
global $explode;
      $explode = explode($str1, $str2); 



    } 

      function ddd() 
        { 
          global $explode; 
          echo($explode[2]); 
          //echo("test"); // <<< bei Aktivierung wird test ausgegeben 
        } 

      function bbb() 
        { 
          global $explode; 
          echo($explode[0]); 
        } 

      function ccc() 
        { 
          global $explode; 
          echo($explode[1]); 
        }

Grund: Du rufst deine Funktionen auch ausserhalb von: aaa() ab!
 
Zuletzt bearbeitet:
Xgame schrieb:
Naja ist doch klar, lässt du es weg, existiert $explode nur im lokalen Namespace von aaa(), nicht jedoch im globalen und somit hast du keine Chance, innerhalb von bbb() darauf zuzugreifen.

BTW halte ich Funktionen innerhalb von Funktionen für einen ziemlich abartigen Stil.

Mir gehts nur um die Übersicht, habs nun mit define "gelöst".