Jump to content

foreach by reference


marko.crni

Recommended Posts

Can someone explain this strange behavior:

 

$aArray = array(
1 => null,
2 => null,
3 => null,
);
foreach($aArray as $key => &$val)
{
$val = "Some Value";
foreach($aArray as $Xkey => $Xval){} // Second foreach
}
var_dump($aArray);

Rsult is:

array(3) {

  [1]=>

  string(10) "Some Value"

  [2]=>

  NULL

  [3]=>

  NULL

}

 

 

It looks like second foreach breaks reference, why?

Link to comment
https://forums.phpfreaks.com/topic/217013-foreach-by-reference/
Share on other sites

For info about & read php manual:

http://www.php.net/manual/en/control-structures.foreach.php

http://php.net/manual/en/language.references.php

From manual: As of PHP 5, you can easily modify array's elements by preceding $value with &. This will assign reference instead of copying the value.

This problem exists on PHP Version 5.1.6 with zend optimizer.

On PHP 5.3.2 with no optimizer, result is:

array(3) {

  [1]=>

  string(10) "Some Value"

  [2]=>

  string(10) "Some Value"

  [3]=>

  &string(10) "Some Value"

}

Worked as expected.... So I guess problem is in PHP or Zend optimizer

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.