ID: 46416 Updated by: [EMAIL PROTECTED] Reported By: bugzilla at zuavra dot net -Status: Open +Status: Bogus Bug Type: Scripting Engine problem Operating System: * PHP Version: 5.3.0alpha2 New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Previous Comments: ------------------------------------------------------------------------ [2008-10-29 10:06:26] bugzilla at zuavra dot net Description: ------------ Using each() to iterate through an object will produce weird results in two respects: 1. It will expose private and protected members alongside public ones. 2. For private and protected members, the keys (names) are jumbled. Yes, I know that this behaviour is known and that the manual page for each() warns about this. But such an inconsistency should not exist. Desirable consistent behaviour: a) Produce the same results as foreach() (show only public members). or b) Refuse to work with objects altogether and state so in the manual. Reproduce code: --------------- <?php class Example { private $priv = 1; protected $prot = 2; public $pub = 3; } $obj = new Example(); while (list($key, $val) = each($obj)) { printf("%s = %s\n", $key, $val); } ?> Expected result: ---------------- pub = 3 Actual result: -------------- [NUL]Example[NUL]priv = 1 [NUL]*[NUL]prot = 2 pub = 3 where [NUL] is the null (0x00) character ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=46416&edit=1
