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