Mailinglisten-Archive |
Hi,
On Friday 21 May 2004 21:07, Peter Bieling wrote:
> > natuerlich kannst Du ein Array ueberschreiben - aber:
> > Ein String ist auch nur ein Array ...
Nein. Auf Strings kann man mit der $foo[X]-Syntax zugreifen (X ist vom Typ
int), das macht in PHP(1) aber kein Array aus. Wäre ein String ein Array
müsste ja folgendes gehen: $string = '012345'; $string['foobar'] = 'abc'; Das
Ergebnis ist in PHP jetzt "112345" und kein Array mit sieben Elementen, was
man hätte erwarten können, wenn es ein Array wäre.
> > Jedoch sind die Core-Developer nicht konsequent,
> > d.h. offiziell wird bei Type-Differenzen immer nach
> > String konvertiert - hier jedoch nicht.
Wieso bekomme ich dann das folgende:
$ php -r "var_dump(12 + 'bar');"
int(12)
Sueht doch recht nach int aus ;-)
> vielen Dank, auch an Ringo, ich war da auf der falschen Spur.
>
> Wenn man bedenkt, was es sonst so an Warnmeldungen gibt, würde ich es
> für sinnvoller halten, einen nicht existierenden Key zu monieren. Das
> ist doch eine ganz erhebliche Fehlerquelle.
Eigentlich dachte ich PHP5 würde eine E_STRICT werfen, wenn man $string[0]
verwendet - tut es aber nicht. (eigentlich dachte ich das schon PHP4 eine
E_NOTICE werfen würde, erst dann hatte ich auf E_STRICT getestet...)
Jedenfalls ist die korrekte Syntax um auf die einzelnen Zeichen eines Stirngs
zuzugreifen mit geschweiften Klammern:
<?php
$string = 'foobar';
echo $string{0}, $string{5};
?>
Vergleiche Manual:
http://www.php.net/manual/language.types.string.php
> Wenn ich den String als Array sehe, finde ich aber folgendes interessant:
Wie gesagt ein Array ist in PHP kein String - auch wenn man teils ene ähnliche
Syntax verwenden kann.
johannes
Anmerkung:
(1) In anderen Sprachen (C sei genannt) ist ein "String" ein Array aus
einzelnen Zeichen (char) das ist auch mir bekannt.
php::bar PHP Wiki - Listenarchive