Tom: Definieren Assoziativen Array, Stilfrage

Beitrag lesen

Hello,

bevor ich mir einen Unsinn angewöhne, wie definiere ich den verständlich
einen assoziativen Array ?
a.)

$Pflichtfeld = array ("Name"     => "Ja",
                      "eMail"    => "Nein",
                      "Homepage" => "Nein",
                      "Text"     => "Ja");

oder

b.)
$Pflichtfeld["Name"] = "Ja";
$Pflichtfeld["eMail"] = "Nein";
$Pflichtfeld["Homepage"] = "Nein";
$Pflichtfeld["Text"] = "Ja";

Die beiden Varianten sind keinesfalls identisch!
PHP verwendet die implizite Variablendeklaration, dass bedeutet, dass bei a) die Variable $Pflichtfeld als Array neu angelegt oder, falls sie bereits vorhanden war, mit einem "Array" [1] überschrieben wird.

Bei Variante b) werden aber in dieser Schreibweise nur die Subelemente ['Name'], ['eMail'] ... neu belegt. Das funktioniert aber nur, wenn $Pflichtfeld bereits als Array vorhanden ist, oder noch gar nicht deklariert war. Es funktioniert nicht, wenn $Pflichtfeld z.B. schon als String-Variable vorhanden ist.

Die vollständige Deklaration b) müsste also lauten (ich führe gleich mal meine Schreibweise ein):

$_pflichtfeld = array();
$_pflichtfeld['name'] = 'Ja';
$_pflichtfeld['email'] = 'Nein';
$_pflichtfeld['homepage'] = 'Nein';
$_pflichtfeld['text'] = 'Ja';

in der ersten Zeile wird die Variable 1. Ordnung angelegt oder, falls sie vorhanden war, freigegeben und als Array neu angelegt.
Ich kennzeichne Array-Variablen seit einiger Zeit mit einem $_ und Objekte mit $__
Das hat sich bewährt. Die übliche Notation mit dem vorangestellten Typ  habe ich mir bei PHP abgewöhnt, da man durch die automatische Typumwandlung ohnehin nur noch zwischen Skalaren und Strukturen ("Arrays" und Spezial-Typen) unterscheidet.
Die "kleinen" Häkchen reichenvollkommen aus. Die Strings müssen ja nicht mehr geparst werden.

[1] Arrays sind in PHP eigentlich verkettete Listen oder Bäume. Sie stellen keinen geschlossenen Speicherbereich dar, sondern im Speicher verteilte Objekte, die jedes auch unterschiedliche Typen tragen können.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau