|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-11-14 17:38 UTC] andre at fscinternet dot com
It appears that using defined constants to index an array within a class results in different behaviour than arrays defined without.
Within a class, the array treats the constant as a string literal, whereas in a regular array definition, the constant is properly evaluated.
Which of the two is the "correct" behaviour, and why do they differ between contexts? Is there a way to get the results of Situation A in Situation B?
--(snip)--
<?php
define( 'TEST1', 1 );
define( 'TEST2', 2 );
define( 'TEST3', 3 );
// Situation A
$aTest = array(
TEST1 => 'TEST1',
TEST2 => 'TEST2',
TEST3 => 'TEST3'
);
print_r( $aTest );
#########################################################################
// Situation B
class Test
{
var $aTest2 = array(
TEST1 => 'TEST1',
TEST2 => 'TEST2',
TEST3 => 'TEST3'
);
}
$oTest = new Test;
print_r( $oTest );
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 29 02:00:01 2025 UTC |
Seems to be fix in php-4.2.0dev, the (correct) output I get is: Array ( [1] => TEST1 [2] => TEST2 [3] => TEST3 ) test Object ( [aTest2] => Array ( [1] => TEST1 [2] => TEST2 [3] => TEST3 ) )