PHP for循环只显示1个元素

Tyl*_*ler 0 php xml for-loop

我尝试使用PHP for,我对它很陌生.我有一个xml文件存储在一个名为的变量中$xmlroot.在这里你可以看到我的代码:

<?php
    $xmlroot = $_POST['xmldata'];
    //echo "Your data is: " . $xmlroot;

    $doc = new DOMDocument;
    $doc->loadXML($xmlroot);

    for($i = 0; $i < count($xmlroot); $i++){
        echo $doc->getElementsByTagName('postalcode')->item($i)->nodeValue;
    }
?>
Run Code Online (Sandbox Code Playgroud)

但它只是向我展示了第一个XML tag.它应该显示所有称为"邮政编码"的标签.我的XML文件看起来像这样:

<root>
    <code>
        <postalcode>12345</postalcode>
        <name>Test1</name>
    </code>
    <code>
        <postalcode>67890</postalcode>
        <name>Test2</name>
    </code>
    <code>
        <postalcode>13579</postalcode>
        <name>Test3</name>
    </code>
    <code>
        <postalcode>02468</postalcode>
        <name>Test1</name>
    </code>
</root>
Run Code Online (Sandbox Code Playgroud)

它应该显示4个元素,但它只显示1.任何建议?

谢谢!

Ama*_*ali 6

那是因为count($xmlroot)等于1.如果您要使用for循环,则需要使用该length属性来检索元素的数量.

但是,foreach循环更容易:

$xmlroot = file_get_contents('file.html');

$doc = new DOMDocument;
$doc->loadXML($xmlroot);

foreach ($doc->getElementsByTagName('postalcode') as $postalcode) {
    echo $postalcode->nodeValue . '<br/>';
}
Run Code Online (Sandbox Code Playgroud)

演示.