簡體   English   中英

php foreach的XML提取未循環

[英]XML extract with php foreach is not looping

我正在嘗試進行此循環,但它僅返回第一個值。

XML

<catalog>
<dd>
    <categoryassignment categoryid="3d-magic" productid="000000000000109330_PURPLE/ BLUE"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000109330_PURPLE/ BLUE/ ORANGE"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000109330_RED/ GREEN/ YELLOW"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000109335_BLUE/YELLOW"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000109335_PURPLE/ORANGE"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000115881_GREEN/PURPLE"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000115881_ORANGE/BLUE"/>

    <categoryassignment categoryid="3d-magic" productid="000000000000115881_RED/YELLOW"/>

    <categoryassignment categoryid="3d-magic" productid="000000000109329001"/>

    <categoryassignment categoryid="3d-magic" productid="000000000109329002"/>

    <categoryassignment categoryid="3d-magic" productid="000000000109335001"/>

    <categoryassignment categoryid="3d-magic" productid="000000000111568001"/>

    <categoryassignment categoryid="3d-magic" productid="000000000111568002"/>
</dd>

PHP

$xml=simplexml_load_file("store.xml") or die("Failed to create an object");

foreach($xml->children() as $books) { 
echo $books->categoryassignment['categoryid'];echo $books->categoryassignment['productid'];echo "<br>";}

從此處的示例中: https : //www.w3schools.com/php/php_xml_simplexml_get.asp

您需要更改引用數據的方式。 如果您首先通過以下方法進行快速調試:

print_r($xml);

您將看到您有一個像這樣的對象:

SimpleXMLElement Object
(
    [dd] => SimpleXMLElement Object
        (
            [categoryassignment] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [categoryid] => 3d-magic
                                    [productid] => 000000000000109330_PURPLE/ BLUE
                                )
                        )
                    [1] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [categoryid] => 3d-magic
                                    [productid] => 000000000000109330_PURPLE/ BLUE/ ORANGE
                                )
                        )
         ... etc ...

有了這些知識,您就可以輕松地了解將foreach放在哪里。 就像這樣(里面的$books稍有變化):

foreach($xml->dd->categoryassignment as $books) { 
    echo $books['categoryid'];
    echo ' ';
    echo $books['productid'];
    echo "<br>\n";
}

結果是:

 3d-magic 000000000000109330_PURPLE/ BLUE 3d-magic 000000000000109330_PURPLE/ BLUE/ ORANGE 3d-magic 000000000000109330_RED/ GREEN/ YELLOW 3d-magic 000000000000109335_BLUE/YELLOW 3d-magic 000000000000109335_PURPLE/ORANGE 3d-magic 000000000000115881_GREEN/PURPLE 3d-magic 000000000000115881_ORANGE/BLUE 3d-magic 000000000000115881_RED/YELLOW 3d-magic 000000000109329001 3d-magic 000000000109329002 3d-magic 000000000109335001 3d-magic 000000000111568001 3d-magic 000000000111568002 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM