php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #37875 while(list() = each() ) on simplexml_element loops forever
Submitted: 2006-06-21 15:24 UTC Modified: 2007-08-25 01:00 UTC
Votes:14
Avg. Score:3.5 ± 1.2
Reproduced:6 of 6 (100.0%)
Same Version:2 (33.3%)
Same OS:2 (33.3%)
From: jona at oismail dot com Assigned:
Status: No Feedback Package: SimpleXML related
PHP Version: 5.1.4 OS: Windows 2000
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: jona at oismail dot com
New email:
PHP Version: OS:

 

 [2006-06-21 15:24 UTC] jona at oismail dot com
Description:
------------
When doing a while (list($key, $val) = each($obj_XML) ) on a Simple XML object PHP loops forever.

Is this possibly related bug: #24945 foreach on simplexml_element loops forever?
Please note, for each works but only output the tag not the attribute.

Found on Windows 2000 running IIS with PHP5.1.4 as an ISAPI module.

Reproduce code:
---------------
<?php
$sXML = '<?xml version="1.0" encoding="ISO-8859-5"?>
<root type="input">
<username>Jona</username>
</root>';

$obj_XML = simplexml_load_string($sXML);

while (list($key, $val) = each($obj_XML) )
{
	echo $key ." - ";
	if(is_array($val) === true)
	{
		while (list($k, $v) = each($val) )
		{
			echo $k ." - ". $v;
		}
	}
	else
	{
		echo $val;
	}
	echo "<br />";
}
?>

Expected result:
----------------
@attributes - type - input
username - Jona

Actual result:
--------------
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input
@attributes - type - input

etc.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-06-29 18:21 UTC] tys at tvg dot ca
I'm running into the same bug but on a generic php PEAR DB object which leads me to believe this isn't specific to Simple XML objects.

PHP 5.1.2 (cgi) (built: May  1 2006 01:12:05)
mysql  Ver 14.12 Distrib 5.0.18, for pc-linux-gnu (i686) using readline 5.0


while(list($key,$val)=each($main->getData())) enters an endless loop

foreach($main->getData() as $key=>$val) works fine
 [2006-06-29 18:23 UTC] tys at tvg dot ca
Forgot to mention, the while code works on PHP verison 5.0.4 (cgi).
 [2007-06-13 02:39 UTC] pburney at lotsa dot net
I discovered this bug in one of my applications as well. In my case, the item was a simple multidimensional array/hash:

$_SESSION['prefs'] = array();

$_SESSION['prefs']['something'] = 'something else';

while (list($key, $value) = each($_SESSION['prefs'])) {

   echo $key . ' is ' . $value . "\n";

}

would just run forever printing:

something is something else
something is something else
something is something else
 [2007-08-17 20:06 UTC] jani@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows (zip):
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip

For Windows (installer):

  http://snaps.php.net/win32/php5.2-win32-installer-latest.msi

Lot has changed since 5.1.4 so it's likely this is already fixed.
 [2007-08-25 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2009-08-02 13:14 UTC] bullshitemail at juno dot com
I ran into the same issue:

 while (list($key, $questi) = each (($HTTP_SESSION_VARS['scoreboard'][$cat]))) 

created an endless loop. I trouble shot it by creating: 

$a = 1;

while (list($key, $questi) = each (($HTTP_SESSION_VARS['scoreboard'][$cat])) && $a < 10) { 

a++  

By adding the variable $a I limited the loops to 10 times so that it would not crash my browser while I tried to figure out what was happening.

>>>>>>>>>>>>>>>>  THE FIX  <<<<<<<<<<<<<<<<
I found that I had an extra set of brackets that I didn't need.

while (list($key, $questi) = each ($HTTP_SESSION_VARS['scoreboard'][$cat])) 

This worked for me hope that it helps someone.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 11:01:30 2024 UTC