ID: 45400
Updated by: [EMAIL PROTECTED]
Reported By: php at darkk dot net dot ru
-Status: Open
+Status: Bogus
Bug Type: Scripting Engine problem
Operating System: Linux, FreeBSD
PHP Version: 5.2.6
New Comment:
In your code:
$name = "foobar";
$name['anything'] = $name;
$name['anything'] is addressing a string offset, 'anything' is casted
to 0 so you're overwriting the first character of $name with $name.
The first result, string(6) "oobar", is looking like it's overwriting
the first byte with a null byte, which isn't what one expects but
related to the way PHP optimizes access to variables, which isn't made
for "wrong" code.
Previous Comments:
------------------------------------------------------------------------
[2008-07-01 11:43:43] php at darkk dot net dot ru
I've just found workaround for both issues:
- $name['anything'] = $name;
+ $name = array('anything' => $name);
I also can say that 5.2.0 and 5.2.3 are not affected (at least that's
what people at #php @ freenode say).
------------------------------------------------------------------------
[2008-07-01 11:34:58] php at darkk dot net dot ru
Description:
------------
Converting from string to array using
$name['foobar'] = $name
does not work in some cases.
Reproduce code:
---------------
first:
function foobar($name) {
$name['anything'] = $name;
var_dump($name);
}
foobar("foobar");'
second:
$name = "foobar";
$name['anything'] = $name;
var_dump($name);
Expected result:
----------------
in both cases I expect to see:
array(1) {
["anything"]=>
string(6) "foobar"
}
Actual result:
--------------
first:
string(6) "oobar"
second:
string(6) "foobar"
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45400&edit=1