php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #27923 foreach() with references broken when iterating only over value
Submitted: 2004-04-08 15:20 UTC Modified: 2004-04-23 23:46 UTC
Votes:3
Avg. Score:5.0 ± 0.0
Reproduced:3 of 3 (100.0%)
Same Version:1 (33.3%)
Same OS:2 (66.7%)
From: adam at trachtenberg dot com Assigned: andi (profile)
Status: Closed Package: Scripting Engine problem
PHP Version: 5CVS-2004-04-13 OS: *
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: adam at trachtenberg dot com
New email:
PHP Version: OS:

 

 [2004-04-08 15:20 UTC] adam at trachtenberg dot com
Description:
------------
In PHP 5, foreach() allows you to iterate over values by 
reference. This does not work when you do foreach($array 
as $value) instead of foreach($array as $key => $value).

I believe this patch fixes the problem, but someone 
should *really* double check it. :)

http://www.trachtenberg.com/patches/
foreach_by_reference.txt

Reproduce code:
---------------
php -r '$array = array(); foreach($array as $value) {)'

Expected result:
----------------
Nothing.

Actual result:
--------------
PHP Fatal error:  Key element cannot be a reference in 
Command line code on line 1

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-04-12 19:31 UTC] sniper@php.net
your example doesn't have any references in it..? (and it works fine when I replace the last ) with } :)

 [2004-04-12 19:40 UTC] adam at trachtenberg dot com
Jesus. Sometimes I reduce the test case too far. :)

$a = array('foo', 'bar');

foreach ($a as &$value) {
    $value = strtoupper($value);
}

print_r($a);

$a should have FOO and BAR, as it works okay if you do:

foreach ($a as $k => &$value) {
    $value = strtoupper($value);
}

But PHP gives an error on the first example w/o my 
patch.

(At least I hope it still does, I need to recompile PHP 
to triple check.)
 [2004-04-12 19:43 UTC] sniper@php.net
See also bug #27964 (a bit different case but same errors :)

 [2004-04-23 01:44 UTC] amt@php.net
Any chance of this getting into RC2?
 [2004-04-23 20:42 UTC] amt@php.net
Cannot reproduce on Linux or Mac OS X with snapshots, 
but bug continues to exist on Mac OS X when building 
from CVS.
 [2004-04-23 23:46 UTC] andi@php.net
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jan 30 23:01:30 2025 UTC