Tom: implizites Arraydefinieren "considered harmful"

Beitrag lesen

Hello,

$arg = "scheisse";

$_data = unserialize($arg);

Diese Zeile liefert bei mir eine Notice über einen unzulässigen Parameterwert in $arg. War ja auch klar...

$_data = "noch ein String";
$_data["wert"] = "neuer Wert";

echo "$_data:\n";
var_dump($_data);

Und an dieser Stelle hat deine unglückliche Auswahl an Teststrings einen sehr ungünstigen Effekt überdeckt.

Teste mal so:

$_data = "1 Million Euro";
$_data['wert'] = 9;

var_dump($_data);

Da werden aus einer Million plötzlich 9 Millionen!

Der erste Buchstabe des Strings wird jeweils überschrieben. Zumindest bei meiner Version 4.3.0 und 4.3.3.

Merke: Das implizite Definieren von Arrays ist nicht die Methode, die man wirklich anwenden sollte.

Ja, genau darum geht es mir. Ich ahbe in diversen Shareware und Freeware-Programmen soviele merkwürdige Sachen gefunden, dass ich vor einiger Zeit einfach mal angefangen habe, die Fehlerquellen zu suchen und zu sortieren. das implizite Dekalrieren ist ja bei PHP ausdrücklich erlaubt, man muss nur vorher schauen, ob der Pfad auch frei ist.

Dein Besipiel schau ich mir gelich noch an.

Ich danke für den Input.

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

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen