php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #67608 PHP Bug when reusing variables by references
Submitted: 2014-07-11 15:21 UTC Modified: 2014-07-11 17:00 UTC
From: rafavega at gmail dot com Assigned:
Status: Not a bug Package: *General Issues
PHP Version: 5.5.14 OS: Debian, MacOS
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: rafavega at gmail dot com
New email:
PHP Version: OS:

 

 [2014-07-11 15:21 UTC] rafavega at gmail dot com
Description:
------------
What this code should do, is to take the $lines array and delete the 2B value, but it doesn’t work like that, and is because it get crash when you use the $items variable in the second foreach and you already used it as a referece variable, even if you clean the $items variable with an empty array as you see in the code.

Just if you change the name or the $items variable in the second foreach it works fine.

Test script:
---------------
$lines = array(
	'1' => array(
		'1A'
	),
	'2' => array(
		'2A',
		'2B',
		'2C'
	)
);

foreach($lines as &$items){
	foreach($items as $key => $value){
		if($value=='2B') unset($items[$key]);
	}
}

$items = array();
foreach($lines as $key => $items){
	print_r($items);
}

Expected result:
----------------
array(
		'1A'
)
array(
		'2A',
		'2C'
	)


Actual result:
--------------
array(
		'1A'
)
array(
		'1A'
)

Patches

add-fronk-support (last revision 2014-07-11 15:23 UTC by rafavega at gmail dot com)

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2014-07-11 17:00 UTC] aharvey@php.net
-Status: Open +Status: Not a bug
 [2014-07-11 17:00 UTC] aharvey@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

This is unfortunate, but documented and expected behaviour.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jan 30 17:01:31 2025 UTC