The problem is one of simplicity ;)
I ran into the same problem a couple days ago. In the two examples, an array of element 'child' is expected. That array may be one or more elements. SimpleXML turns multiple children of the same element name into array's, but a single child is not. I'm not sure what the right answere is for it though, other than conditionaly checking for a single child.


There's a part of me that thinks that children should be accessed via a function, but then you start getting dom-like:

$root->childNodes()[0]

and it always works. It also prevents problems with something like:

<root child="test">
  <child>abcd</child>
</root>

Shane

Sterling Hughes wrote:
Zeev seems to be working on foreach and simplexml, but the above
behaviour is the correct one.  Why should the first loop?  If I did:

<?php
foreach ("hello" as $world) {
        var_dump($world);
}
?>

what would i get?

-Sterling

On Thu, 2003-09-04 at 18:24, Sebastian Bergmann wrote:

The following script

   <?php
   $root = simplexml_load_string('
   <root>
     <child />
   </root>
   ');

   foreach ($root->child as $child) {
       var_dump($child);
   }
   ?>

does not print anything while

   <?php
   $root = simplexml_load_string('
   <root>
     <child />
     <child />
   </root>
   ');

   foreach ($root->child as $child) {
       var_dump($child);
   }
   ?>

correctly prints

   object(simplexml_element)#2 (0) {
   }
   object(simplexml_element)#3 (0) {
   }

--
Sebastian Bergmann
http://sebastian-bergmann.de/                   http://phpOpenTracker.de/

Das Buch zu PHP 5: http://professionelle-softwareentwicklung-mit-php5.de/

-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to