2013-06-12 82 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