Req #65248 [Opn->Nab]: using references on foreach
| From: | tyrael@php.net | Date: | Thu, 25 Jul 2013 00:38:53 +0000 |
| Subject: | Req #65248 [Opn->Nab]: using references on foreach | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-180473@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65248&edit=1
ID: 65248
Updated by: tyrael@php.net
Reported by: 791446794 at qq dot com
Summary: using references on foreach
-Status: Open
+Status: Not a bug
Type: Feature/Change Request
Package: Scripting Engine problem
Operating System: Win
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Per the warning at http://php.net/manual/en/control-structures.foreach.php,
you
should always unset() the iterator reference after the foreach to avoid this sort
of issue, since PHP doesn't have block scope.
Previous Comments:
------------------------------------------------------------------------
[2013-07-12 04:02:32] 791446794 at qq dot com
Description:
------------
PHP version: 5.3.13
EXAMPLE:
<?php
$a=array(
'key'=>1
);
foreach($a as &$item)
{}
$b=array(
'abc'=>2
);
foreach($b as &$item)
{}
var_dump($a);
?>
It will get "array(1) { ["key"]=> &int(2) } "
Buy use code like following
EXAMPLE:
<?php
$a=array(
'key'=>1
);
foreach($a as &$item)
{}
unset($item);//unset the variable $item
$b=array(
'abc'=>2
);
foreach($b as &$item)
{}
var_dump($a);
?>
It get the result "array(1) { ["key"]=> int(1) } ";
I think that when use refrence in foreach ,it better auto unset the refrenced ITEM and don't
need use 'unset' explicitly .
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=65248&edit=1