Mailinglisten-Archive |
Hallo Johannes, Johannes Schlueter wrote: > 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 Da steht aber auch: <zitat> Anmerkung: Für Abwärtskompatibilität können Sie für den selben Zweck immer noch die Array-Klammern verwenden. Diese Syntax wird jedoch seit PHP 4 missbilligt.</zitat> Wenn man die Kommentare im Online-Manual liest stößt man auch auf folgendenen interssanten Versuch: ============== 03-Mar-2003 04:04 Regarding "String access by character": Apparently if you edit a specific character in a string, causing the string to be non-continuous, blank spaces will be added in the empty spots. echo '<pre>'; $str = '0123'; echo "$str\n"; $str{4} = '4'; echo "$str\n"; $str{6} = '6'; echo "$str\n"; This will output: 0123 01234 01234 6 Notice the blank space where 5 should be. (PHP 4.3.1) ======= Wenn ich einen höheren Index wähle, wird mit Leerzeichen aufgefüllt. Ich habe mal das Beispiel etwas abgewandelt: <?php echo '<pre>'; $str = '012345'; $str{3}=''; echo "$str\n"; echo "Index3: " . $str{3}; echo '</pre>'; ?> Die Testausgabe ist leer! Hier hätte ich jetzt erwartet, dass das leere Element rausgeworfen wird. Wird es aber nicht einmal in der Kopie: $str2=$str; echo "Kopierte Variable- Index3: " . $str2{3}; Der String ist hoffnungslos durchlöchert. ;-( Auch folgendes hilft nicht, den String neu zu bewerten: $index3 = substr($str2, 3, 1); echo "Substring-Test: " . $index3 . "\n"; echo "Stringlänge von str2: " . strlen($str2); > Anmerkung: > (1) In anderen Sprachen (C sei genannt) ist ein "String" ein Array aus > einzelnen Zeichen (char) das ist auch mir bekannt. Ja, und dass PHP in C geschrieben ist, scheint das wohl ein Artefakt zu sein. Denn nur so kann ich verstehen, dass es in PHP Strings geben kann, die "in sich" Leerzeichen enthalten können. Viele Grüße Peter
php::bar PHP Wiki - Listenarchive