sepideh.f
sepideh.f

Reputation: 3

how to use loop for array

I have a array which it reads its cells from a xml file,i wrote it by "for" but now because i don't know how many node i have i wanna to write this loop in a way that it start and finish up to end of xml file.my code with for is:

$description=array();

for($i=0;$i<2;$i++)
{
$description[$i]=read_xml_node("dscription",$i);
}

and my xml file:

<eth0>
<description>WAN</description>      
</eth0>
<eth1>
<description>LAN</description>      
</eth1>

in this code i must know "2",but i wanna to know a way that doesn't need to know "2".

Upvotes: 0

Views: 86

Answers (3)

Petros Mastrantonas
Petros Mastrantonas

Reputation: 1046

i am not sure what kind of parser you are using, but it is very easy with simplexml, so i put together some sample code using simplexml.

something like this should do the trick:

$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<node>
<eth0>
<description>WAN</description>      
</eth0>
<eth1>
<description>LAN</description>      
</eth1>
</node>
XML;

$xml = new SimpleXMLElement($xmlstr);

foreach ($xml as $xmlnode) {
 foreach ($xmlnode as $description) {
  echo $description . " ";
 }
}

output:

WAN LAN  

Upvotes: 1

Jared
Jared

Reputation: 3016

The parser you use might allow you to use a while loop which will return false when it has reached the end of the XML document. For example:

while ($node = $xml->read_next_node($mydoc)) {
    //Do whatever...
}

If none exists, you can try using count() as the second parameter of your for loop. It returns the length of an array you specify. For example:

for ($i = 0; $i < count($myarray); $i++) {
    //Do whatever...
}

Upvotes: 0

Jayram
Jayram

Reputation: 19578

$length = count($description);
for ($i = 0; $i < $length; $i++) {
  print $description[$i];
}

Upvotes: 0

Related Questions