ID: 34752 Updated by: [EMAIL PROTECTED] Reported By: trash at jennyfm dot net -Status: Open +Status: Feedback Bug Type: Scripting Engine problem Operating System: linux 2.6.13 PHP Version: 5.0.5 New Comment:
"Returns wrong" ? What's the expected result, what's the actual result you get? This is what I got with 5.0.6-dev: Array ( [0] => Test Object ( [blc:protected] => [bl:protected] => ) [1] => Test Object ( [blc:protected] => [bl:protected] => ) ) Array ( [0] => Test Object ( [blc:protected] => [bl:protected] => ) [1] => Test Object ( [blc:protected] => [bl:protected] => ) ) Is this "wrong" or "right" ? Previous Comments: ------------------------------------------------------------------------ [2005-10-06 15:23:38] trash at jennyfm dot net hmmpf ;D hope this is short enough <?php echo "<pre>"; class Test{ protected $blc; protected $bl; public function test2 (){ $this->bl['0'] =& new $this; $this->bl['1'] =&new $this; print_r($this->bl); foreach ($this->bl as $key => $value){ $this->blc[$key] =true; } //here it returns wrong bl in 5.0.5, in <=5.0.4 it works fine print_r($this->bl); } } $buii = new Test(); $buii->test2(); echo "</pre>"; ?> ------------------------------------------------------------------------ [2005-10-06 13:40:01] [EMAIL PROTECTED] I was asking about a SHORT reproduce script. Those scripts are definitely not short. All those classes and other stuff have nothing to do with `foreach`. ------------------------------------------------------------------------ [2005-10-06 13:35:39] trash at jennyfm dot net The main script is here (with wrong result in php 5.0.5): wp1011644.wp021.webpack.hosteurope.de/muellercms/test.php source: wp1011644.wp021.webpack.hosteurope.de/muellercms/test.php_ wp1011644.wp021.webpack.hosteurope.de/muellercms/include/function_template5.inc.php_ wp1011644.wp021.webpack.hosteurope.de/muellercms/include/function_templateext5.inc.php_ template file (not relevant): wp1011644.wp021.webpack.hosteurope.de/muellercms/templates/test.tpl_ The error seems to be in function_templateext5::_initTemplate after the foreach print_r($this->bl) returns overwritten result. In php 5.0.4 the result looks like: Array ( [testsub] => PDTemplateExt Object ( [removeEmptyBlocks] => 1 [delimiterStart:protected] => { [delimiterEnd:protected] => } [t:protected] => ).......... test buii before the foreach the $test->bl seems to be ok in both versions(5.0.4 and 5.0.5). Same problem i have with while (list ($key, $value) = each ($this->bl)), in 5.0.4 it works and in 5.0.5 not. Server config is here wp1011644.wp021.webpack.hosteurope.de/phpinfo.php ------------------------------------------------------------------------ [2005-10-06 11:11:26] [EMAIL PROTECTED] Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If possible, make the script source available online and provide an URL to it here. Try to avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [2005-10-06 10:58:10] trash at jennyfm dot net Description: ------------ foreach seam to overwrite values in array ..... it works fine in 5.0.4 but in 5.0.5 not. don't know why... Reproduce code: --------------- full class source here: http://kuerbis.org/template/show_source.php class Template extends KTemplate { ........... protected function _initTemplate() { parent::_initTemplate(); if (isset($this->bl) && is_array($this->bl)) { print_r($this->bl); //before foreach bl is ok in 5.0.4 and 5.0.5 foreach ($this->bl as $key => $value) { $this->blc[$key] = true; } //after foreach bl is overwritten in 5.0.5, in 5.0.4 it works print_r($this->bl); } } ...... } Expected result: ---------------- in php 5.0.4 i get (after the foreach) ....... Array ( [mainmenu] => KTemplateExt Object ( [removeEmptyBlocks] => 1 [delimiterStart:protected] => { [delimiterEnd:protected] => } [t:protected] => {menu_title} [pl:protected] => [bl:protected] => [templatefile:protected] => [className:protected] => KTemplateExt [params] => ) ) .... and so on Actual result: -------------- in php 5.0.5 i get (after the foreach) ( [menublock] => Array ( [menublock] => 1 [not_logged_in] => 1 [logged_in] => 1 ) [not_logged_in] => 1 [logged_in] => 1 ) .... and so on ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=34752&edit=1