Bug #77397 [Opn->Nab]: Reference variable in foreach
| From: | nikic@php.net | Date: | Wed, 02 Jan 2019 10:11:58 +0000 |
| Subject: | Bug #77397 [Opn->Nab]: Reference variable in foreach | ||
| References: | 1 | Groups: | php.standards |
| Request: | Send a blank email to standards-+get-1375@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77397&edit=1
ID: 77397
Updated by: nikic@php.net
Reported by: shranet at gmail dot com
Summary: Reference variable in foreach
-Status: Open
+Status: Not a bug
Type: Bug
Package: PHP Language Specification
Operating System: MacOS
PHP Version: 7.2.13
Block user comment: N
Private report: N
New Comment:
Please see the red "Warning" box on http://php.net/manual/en/control-structures.foreach.php,
which explains this behavior. You can avoid it by writing unset($v) after the first foreach loop.
Previous Comments:
------------------------------------------------------------------------
[2019-01-02 10:06:28] shranet at gmail dot com
Description:
------------
When using same variable with reference and without reference in foreach works incorrectly.
Test script:
---------------
$data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
foreach($data as $k => &$v) {
rsort($v);
}
foreach($data as $k => $v) {
print_r($v);
}
Expected result:
----------------
Array
(
[0] => 3
[1] => 2
[2] => 1
)
Array
(
[0] => 6
[1] => 5
[2] => 4
)
Array
(
[0] => 6
[1] => 5
[2] => 4
)
Actual result:
--------------
Array
(
[0] => 3
[1] => 2
[2] => 1
)
Array
(
[0] => 6
[1] => 5
[2] => 4
)
Array
(
[0] => 9
[1] => 8
[2] => 7
)
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77397&edit=1