Bug #55773 [Bgs]: foreach issues warning with function main()
Edit report at https://bugs.php.net/bug.php?id=55773&edit=1
ID: 55773
User updated by: Ray dot Paseur at Gmail dot com
Reported by: Ray dot Paseur at Gmail dot com
Summary: foreach issues warning with function main()
Status: Bogus
Type: Bug
Package: SimpleXML related
Operating System: Linux
PHP Version: 5.3.8
Block user comment: N
Private report: N
New Comment:
Thanks for your comment. I have two questions before I abandon this line of thinking. First, what
would you recommend to accomplish the removal of a child from an object based on an attribute of the
child? And second, why would a warning pointing to the nonexistent function main() in the line
number of foreach() be considered "expected" behavior? The php.net web site tells us to
report a bug if we get a message identifying function main(). You can look it up.
http://php.net/manual/en/function.main.php
Surely if this is an error in foreach() an error message might be crafted that gave a hint about the
problem, eh?
Feel free to contact me offline if you have questions about what I posted in the report. I'll
be glad to try to clarify or help in any way.
Previous Comments:
------------------------------------------------------------------------
[2011-09-24 19:03:36] 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
You're removing a child from the object whilst in the middle of
iterating over it. At that point, all bets are off, really. I'm happy
enough to call that expected behaviour, because I don't think there's
actually anything sensible that can be done.
------------------------------------------------------------------------
[2011-09-24 01:32:02] Ray dot Paseur at Gmail dot com
Description:
------------
http://www.laprbass.com/RAY_xml_delete_nodes.php
Outputs:
Warning: main() [function.main]: Node no longer exists in
/home/websitet/public_html/RAY_xml_delete_nodes.php on line 12
<?xml version="1.0"?>
<category id="1" title="category 1">
<item id="b" title="item b" delete="false"/>
</category>
Test script:
---------------
<?php // RAY_xml_delete_nodes.php
error_reporting(E_ALL);
echo "<pre>";
$xml = <<<XML
<category id='1' title='category 1'>
<item id='a' title='item a' delete='true' />
<item id='b' title='item b' delete='false' />
</category>
XML;
$obj = SimpleXML_Load_string($xml);
$key = 0;
foreach ($obj as $item)
{
if ($item["delete"] == 'true') unset($obj->item[$key]);
$key++;
}
$new = $obj->asXML();
echo htmlentities($new);
Expected result:
----------------
No warning message. The URL is here.
http://www.laprbass.com/RAY_xml_delete_nodes.php
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=55773&edit=1
Thread (3 messages)