Sven Rautenberg: mysql_query --> list()=each() : Was mach ich falsch

Beitrag lesen

Aloha, Michael!

Das heißt, bei PHP wären $x[1] und $x['1'] Zugriffe
auf zwei verschiedene Variablen (einen Array und
einen Hash - vorausgesetzt, die Syntax existiert
überhaupt in dieser Form)?

Je nachdem, was man denn so als Variable bezeichnen mag...

$x ist eine Variable - ganz klar. :) Und da es in PHP nur Hashes gibt (und Arrays einfach eine spezielle Form eines Hashes ist), sprichst du mit $x[1] in der Arrayform einen Speicherplatz an, und mit $x['1'] in der Hashform. Beides läuft in diesem Fall auf dasselbe heraus - es ist dieselbe Variable bzw. derselbe Wert, der angesprochen wird.

Ich bin kein Perl-Purist - ich mag allerdings keine
"überladenen Operatoren", die je nach Kontext unter-
schiedliche Bedeutungen haben.
Insofern finde ich die Aufteilung in Perl besser -
allerdings auch dort inkonsequent, weil das Ansprechen
eines Elements eines Hashes bzw. Arrays dort als Skalar
notiert werden muß.

Naja, Perl ist in dieser Hinsicht schon konsequent: Wenn man einen Skalar haben will, muß man das mit $variable tun. Wobei variable eben auch Arrayteil oder Hashteil sein kann - Hauptsache, vorne steht das $.

Man ist es von anderen Programmiersprachen aber gewöhnt, dass das Sonderzeichen vorn (sofern es denn überhaupt notwendig ist) den Variablentyp angibt - $ als Stringvariable, @ als Arrayvariable und % als Hashvariable. Warum kann man nicht auf $string, @array[23] und %hash['key'] zugreifen, wenn man das schon unbedingt trennen muß? Nein, man muß Perl immer wieder daran erinnern, welcher Typ des Variablenzugriffs nun gemeint ist, und streng darauf achten, daß man einen Hash mit %hash2 = %hash1 kopiert, aber mit echo $hash1['key'] einen enthaltenen String ausgibt. Ist in meinen Augen Programmiererschikane. ;->

- Sven Rautenberg