|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-10-06 10:58 UTC] 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 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Dec 01 09:00:01 2025 UTC |
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.phphmmpf ;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>"; ?>"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" ?