Der Martin: Fatal error: Cannot redeclare...

Beitrag lesen

Hallo Christian,

also ich habe verstanden, dass ich Funktionen nicht schachteln kann, aber was heißt, dass Fuktionen immer global sind?

das heißt, PHP unterstützt keine Funktionen, die nur innerhalb einer anderen Funktion "sichtbar" sind, d.h. aufgerufen werden können. Andere Programmiersprachen wie z.B. Pascal als alter Klassiker oder Javascript als moderne Scriptsprache können Funktionen verschachteln:

function fa()
 { var xy ...
   function fb()
    { ...
    }
 }

Die Funktion fb() kann dann nur von innerhalb der Funktion fa() aufgerufen werden (lokal), von außerhalb ist sie sozusagen unsichtbar. Und genau diese Abgrenzung kann PHP nicht leisten.

Außerdem funktioniert es ja, wenn ich das Skript außerhalb einer MySQL-Abfrage benutze und ich weiß nicht warum.

Das hat damit nichts zu tun.

Wie könnte ich die Schachtelung umgehen, brauche ich dann zwei Funktionen? Ich muss ja erst die Funktion firstmonday laufen lassen, und dann mit deren Ergebnis weiterarbeiten...

Deklariere die Funktionen nacheinander, ohne sie zu schachteln. In welcher Reihenfolge du sie dann _verwendest_, ist völlig wurscht. Du kannst eine Funktion jederzeit aus einer anderen heraus aufrufen, das ist kein Problem.

Schönen Abend noch,
 Martin

--
Was du heute kannst besorgen,
das geht sicher auch noch morgen.