ID: 14064 Updated by: derick Reported By: [EMAIL PROTECTED] Old Status: Open Status: Closed Bug Type: Class/Object related Operating System: i386-redhat-linux-gnu PHP Version: 4.0.6 New Comment:
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 ) ) Previous Comments: ------------------------------------------------------------------------ [2001-11-14 17:38:33] [EMAIL PROTECTED] 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 ); ?> ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=14064&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]