ID: 48858 Updated by: sjo...@php.net Reported By: justin dot carlson at gmail dot com -Status: Open +Status: Verified Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.3.0
Previous Comments: ------------------------------------------------------------------------ [2009-07-09 14:37:30] justin dot carlson at gmail dot com I've confirmed this in Linux as well. The following works fine: <?php define('a',1); define('b',1); $test = array(a => 'foo', b => 'bar'); print_R($test); ?> So, it may be related to class constants? ------------------------------------------------------------------------ [2009-07-09 07:25:39] sjoerd-php at linuxonly dot nl Thank you for your bug report. I was able to reproduce the problem and make the testcase somewhat simpler: <?php class Foo { const A = 1; const D = 1; public static $sample = array( self::A => 'First', self::D => 'Last' ); } print_r(Foo::$sample); ?> ------------------------------------------------------------------------ [2009-07-08 22:15:10] justin dot carlson at gmail dot com Description: ------------ Array items are not as defined when using the same key twice. I have not yet tested this outside of a class. Reproduce code: --------------- <?php Foo::Bar(); abstract class Foo { const A = 1; const B = 2; const C = 3; const D = 1; protected static $sample = array( self::A => 'Apple', self::B => 'Boy', self::C => 'Cat', self::D => 'Dog' ); public static function Bar() { print_R( self::$sample ); } } ?> Expected result: ---------------- In PHP 5.2.x: Array ( [2] => Boy [3] => Cat [1] => Dog ) This is what I would expect to be valid, as the 2nd entry would override the first, making "Dog" the correct value for index 1. Actual result: -------------- In PHP 5.3.x: Array ( [1] => Apple [2] => Boy [3] => Cat ) This was not expected, as the 1st entry maintained it's value. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48858&edit=1