dedlfix: Umstellung auf php 7.1 :: Umstieg auf mysqli verpasst?

Beitrag lesen

Tach!

$t4='bar';
$t4[0] = 'foo';
$t4[1] = 'bar';

Sowohl in PHP als auch in hhvm keine Notiz - obwohl eigentlich eingeschaltet! Aber das hier: (Fehlerhaftes Ergebnis ist bei t4)

Das ist ja auch kein Fehler, sondern beschriebenes Verhalten. Der Zugriff auf einzelne Zeichen von Strings mittels []-Operator ist auch keine PHP-Besonderheit, sondern üblich in vielen Sprachen.

t4:fbr

Von den zugewiesenen Strings wird das erste Zeichen genommen, weil du ja einen Zeichenzugriff auf $t4 notiert hast.

Man kann also schon einer Variable, die einen String enthält, einen Array zuweisen.

Nicht nur das. Man kann (in PHP und anderen typschwachen Sprachen) jeder Variable, die einen beliebigen Wert und Typ enthält einen anderen beliebigen Wert und Typ zuweisen. Das wäre sonst etwas sehr eigenartig, wenn das nicht ginge.

Nur eben nicht direkt Elemente eines Array adressieren, wenn der vermeintliche Array ein String ist.

Ach!


Zu beachten ist dabei noch, dass PHP nach wie vor Strings als single-byte-kodiert ansieht. Zugriff auf mehr-byte-kodierte Zeichen klappt auf diese Weise nicht.

dedlfix.