|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-07-20 05:55 UTC] tegel at dubaron dot com
Suppose a string $t: one can access(read) all single characters of $t by reading elements $t[0] .. $t[n] Setting $t[0] however fails, setting $t[1] .. $t[n] succeeds. Looks like when setting element [0] that $t gets converted to array type, and after setting $t[0] the values $t[1]..$t[n] are simply lost. why not this behaviour with other indexes as well, only with item[0] ? - that's not consistent. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 13:00:02 2025 UTC |
The use of brackets as to access a single character from a string is deprecated. Use curly braces instead and you will experience the expected behavior. i.e. <?php $foo = 'bar'; $foo{2} = 't'; echo $foo; ?> There is additional information at http://www.php.net/manual/en/language.types.string.phpThis piece of code works correct with our system as well: <? $s = "hello" ; $s[0] = "H" ; var_dump($s) ; ?> Original sourcecode generating this problem is as follows (although i can not see a particular difference): function ansi2htmlsingle($t) { //convert special characters from one 8-byte //charset another for ($i=0; $i<strlen($t); $i++ ) { $c=ord($t[$i]); $d=$c; switch ($c) { case 138: $d=169; break; case 142: $d=174; break; case 154: $d=185; break; case 158: $d=190; break; }; $t[$i]=chr($d); }; return $t; }; The above function is working only not for character $t[0]. This one is: function ansi2htmlsingle($t) { $r=''; for ($i=0; $i<strlen($t); $i++ ) { $c=ord($t[$i]); $d=$c; switch ($c) { case 138: $d=169; break; case 142: $d=174; break; case 154: $d=185; break; case 158: $d=190; break; }; $r=$r.chr($d); }; return $r; };