Bug #67096 [Opn]: Iterators unexpectedly works with references
| From: | Azq2 at ya dot ru | Date: | Thu, 17 Apr 2014 20:38:25 +0000 |
| Subject: | Bug #67096 [Opn]: Iterators unexpectedly works with references | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-185337@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67096&edit=1
ID: 67096
User updated by: Azq2 at ya dot ru
Reported by: Azq2 at ya dot ru
Summary: Iterators unexpectedly works with references
Status: Open
Type: Bug
Package: Scripting Engine problem
Operating System: Ubuntu 13.04
PHP Version: 5.5.11
Block user comment: N
Private report: N
New Comment:
Т.е. ÑÑаÑое знаÑение из $v по
ÑÑÑлке ÑÑ
Ð¾Ð´Ð¸Ñ Ð² знаÑение
клÑÑа $k маÑÑива $res.
Value of array $res by key $k assigns by reference old value of $v.
Previous Comments:
------------------------------------------------------------------------
[2014-04-17 20:29:32] Azq2 at ya dot ru
Description:
------------
Hello! I don't good speek english... i from Ukraine ;)
ÐоÑÑÐ¾Ð¼Ñ ÑÑÐ°Ð·Ñ Ð½Ð°Ð¿Ð¸ÑÑ Ð½Ð°
ÑÑÑÑком. СÑÑÑ Ð±Ð°Ð³Ð°: еÑли
пеÑеменнаÑ, коÑоÑаÑ
иÑполÑзÑÑÑÑÑ Ð² foreach как ÑÑÑлка
на ÑезÑлÑÑÐ°Ñ ÑекÑÑей
иÑеÑаÑии, Ñже бÑла
деклаÑиÑована Ñанее - Ñо ей
пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение
Ñанее деклаÑиÑованной
пеÑеменной. (кÑоме
поÑледней) РпоÑÑиÑÑÑ
маÑÑив, коÑоÑÑй
иÑполÑзÑеÑÑÑ Ð² foreach.
Ñак не должно бÑÑÑ.
if variable what used in foreach as reference to current iterator value declared before foreach -
iterator value (expect last) assigns of before declared value.
Test script:
---------------
<?php
$array = array(
array(1, 1, 1),
array(1, 1, 1),
array(1, 1, 1),
);
foreach ($array as $k => &$res) {
$v = 27112012;
foreach ($res as $k => &$v) {
}
}
var_dump($array);
Expected result:
----------------
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(1)
}
[1]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(1)
}
[2]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(1)
}
}
Actual result:
--------------
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(27112012)
}
[1]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(27112012)
}
[2]=>
&array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
&int(1)
}
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=67096&edit=1