2013-06-12 63 views
0

我有一个数组,它从一个xml文件中读取它的单元格,我写了“for”,但现在因为我不知道有多少个节点我想要写这个循环一种方式,它开始和结束了,结束的与XML file.my代码:如何使用循环阵列

$description=array(); 

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

和我的XML文件:

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

在此代码我必须知道“2”,但我想知道一种不需要知道“2”的方法。

+0

什么XML解析器/ API您使用的? – deceze

+0

这是使用SimpleXML很平凡:http://php.net/manual/en/simplexml.examples-basic.php – deceze

+0

首先,PHP中没有本地函数称为'read_xml_node',所以你必须告诉我们它的代码或函数存在的库。其次,你拼写'描述'错误('dscription')。 – h2ooooooo

回答

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

使用可能允许您使用while循环将返回false时,它已经达到了XML文档的末尾解析器。例如:

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

如果不存在,你可以尝试使用count()为您for循环的第二个参数。它返回你指定的数组的长度。例如:

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

我不知道你使用的是什么样的解析器,但它是很容易与simplexml的,所以我使用SimpleXML把一些示例代码。

这样的事情应该做的伎俩:

$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 . " "; 
} 
} 

输出:

WAN LAN