Bug #67096 [NEW]: Iterators unexpectedly works with references
| From: | Azq2 at ya dot ru | Date: | Thu, 17 Apr 2014 20:29:32 +0000 |
| Subject: | Bug #67096 [NEW]: Iterators unexpectedly works with references | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-185336@lists.php.net to get a copy of this message | ||
From: Azq2 at ya dot ru
Operating system: Ubuntu 13.04
PHP version: 5.5.11
Package: Scripting Engine problem
Bug Type: Bug
Bug description:Iterators unexpectedly works with references
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 bug report at https://bugs.php.net/bug.php?id=67096&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=67096&r=trysnapshot54
Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=67096&r=trysnapshot55
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=67096&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=67096&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=67096&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=67096&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=67096&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=67096&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=67096&r=support
Expected behavior: https://bugs.php.net/fix.php?id=67096&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=67096&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=67096&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=67096&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=67096&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=67096&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=67096&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=67096&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=67096&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=67096&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=67096&r=mysqlcfg