Bug #48858 [Com]: array item definition problem (regression!)
| From: | cmbecker69 at gmx dot de | Date: | Mon, 16 Sep 2013 16:10:17 +0000 |
| Subject: | Bug #48858 [Com]: array item definition problem (regression!) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-181604@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=48858&edit=1
ID: 48858
Comment by: cmbecker69 at gmx dot de
Reported by: justin dot carlson at gmail dot com
Summary: array item definition problem (regression!)
Status: Verified
Type: Bug
Package: Scripting Engine problem
Operating System: *
PHP Version: 5.3.0
Block user comment: N
Private report: N
New Comment:
According to <http://3v4l.org/ahcBe> this behavior has
already
been fixed with PHP 5.3.7.
Previous Comments:
------------------------------------------------------------------------
[2009-12-08 08:36:54] mp at webfactory dot de
The problem only occurs when the array is initialized in the variable declaration statement in the
class AND class constants (with identical values) are used as keys.
------------------------------------------------------------------------
[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 https://bugs.php.net/bug.php?id=48858&edit=1