#45400 [Opn->Bgs]: $foo = $foo does not work in some cases

From: Date: Tue, 01 Jul 2008 12:49:26 +0000
Subject: #45400 [Opn->Bgs]: $foo = $foo does not work in some cases
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-126148@lists.php.net to get a copy of this message
ID: 45400 Updated by: johannes@php.net 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

« previous php.bugs (#126148) next »