phpbar.de logo

Mailinglisten-Archive

[php] Array mit String überschreiben - Bug?

[php] Array mit String überschreiben - Bug?

Johannes Schlueter schlueter at phpbar.de
Fre Mai 21 21:41:41 CEST 2004


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