Thomas Schmieder: cannot redeclare funktion(), Fehler gefunden

Beitrag lesen

Hallo zusammen,

Die Fehler haben wir nach langem Suchen gefunden:

1.
----------------
Bei der impliziten Deklaration von Mehrdimensionalen Arrays darf keines der Elemente in der Dimensionskette mit einem Skalar vorbelegt gewesen sein.

$person["koerperteil"]["bein"][0]["links"]="zu kurz"; ist möglich.
Wenn aber ein Skalar durch
$person["koerperteil"]="keine"; vorher in das Element geschreiben wurde, funktioniert die obige implizite Neudeklaration nicht mehr. Es gibt dann äußerst ungewöhnliche Ergebnisse. Man kann das Problem durch zwischenzeitliches Überschreiben mit dem richtigen Typ beseitigen.

$person["koerperteil"]="keine";
...
$person["koerperteil"]=array();
$person["koerperteil"]["bein"][0]["links"]="zu kurz"; // nun gehts

2.
----------------
PHP kennt keine Subfunktionen, also Funktionen, die nur Eigentum einer anderen Funktion sind. Alle deklarierten Funktionen sind im gesamten Script erreichbar. Ich habe aber auch bisher nichts darüber gefunden, dass es verboten wäre, trotzdem welche zu schreiben. Das erschien mir manchmal wegen der Zuordnung zu den Funktionen ganz sinnvoll.

Allerdings kann man dann eine solche Funktion mit Subfunktion nur ein einziges Mal im Script aufrufen. Bei der zweiten Verwendung erhält man den beschriebenen Fehler:

cannot redeclare <subfunction()> at zeilennummer in script....

Darauf muss man erst einmal kommen, dass eine Funktion, die einmal geht, kein zweites Mal funktioniert.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.