|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2005-09-15 01:01 UTC] tony2001@php.net
[2005-09-20 13:21 UTC] tony2001@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 06:00:02 2025 UTC |
Description: ------------ I know that the code below is senseless in this form, but I came across it accidentally. This code prodcues a dump of $b object variable which contains two members - 'd' and a strange member shown as ':private'. The name is ':private' when the last line is not present. When this line (echo $a->{4} or similar) is put in the script, var_dump ($b) starts to produce a different dump on each script run. A sample output is shown below. Reproduce code: --------------- <? $a['d'] = 4; $a[''] = 5; $b =(object)$a; var_dump($b); echo $a->{4}; Expected result: ---------------- Maybe object(stdClass)#1 (2) { array (['d'] => int(4), [''] => int(5)) } Actual result: -------------- A sample result is object(stdClass)#1 (2) { ["d"]=> int(4) ["?:private"]=> int(5) } But '?' is often another symbol or a sequence of symbols. Also it is sometimes just [":private"].