ID: 46530 Updated by: [EMAIL PROTECTED] Reported By: serovov at gmail dot com -Status: Open +Status: Bogus Bug Type: *General Issues Operating System: ANY PHP Version: 5.2.6 New Comment:
This is a known issue and has been documented, see Bug #45959. Previous Comments: ------------------------------------------------------------------------ [2008-11-09 13:39:33] serovov at gmail dot com Sorry, but i mix up Actual and Expected section: ------------------------------------------------ Actual: Test #1: array '0' => string 'a' (length=1) '1' => string 'b' (length=1) '2' => string 'c' (length=1) array 0 => string '0' (length=1) 1 => string '1' (length=1) 2 => string '2' (length=1) boolean false boolean false boolean false boolean false Test #2: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true -------------------------------------------- Expected: Test #1: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true Test #2: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true ------------------------------------------------------------------------ [2008-11-09 13:35:40] serovov at gmail dot com Description: ------------ When object has numeric named vars, and we cast this object to array. we have a problem with isset() checks; PS. if is not a bug, please, explain why. Reproduce code: --------------- <?php class buggy { public function __construct(array $data) { foreach ($data as $key => $value) { $this->$key = $value; } } } function test_buggy($buggy) { $kbuggy = array_keys($buggy); var_dump( $buggy, $kbuggy, isset($buggy[current($kbuggy)]), isset($buggy[$kbuggy[0]]), isset($buggy[$kbuggy[1]]), isset($buggy[$kbuggy[2]]) ); } $array = array( 'a', 'b', 'c', ); $buggy = new buggy($array); $buggy = (array) $buggy; echo "Test #1: "; test_buggy($buggy); echo "Test #2: "; $buggy = unserialize(serialize($buggy)); test_buggy($buggy); ?> Expected result: ---------------- Test #1: array '0' => string 'a' (length=1) '1' => string 'b' (length=1) '2' => string 'c' (length=1) array 0 => string '0' (length=1) 1 => string '1' (length=1) 2 => string '2' (length=1) boolean false boolean false boolean false boolean false Test #2: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true Actual result: -------------- Test #1: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true Test #2: array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) array 0 => int 0 1 => int 1 2 => int 2 boolean true boolean true boolean true boolean true ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=46530&edit=1