簡體   English   中英

解析XML文檔后循環遍歷關聯數組

[英]Loop through an Associative Arrays after parsing an XML document

我使用了一個類來解析XML文件。 XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<user>
   <name id="1">John Mal</name>
   <addr>123 N 45</addr>
   <phone id="5">555.55.222</phone>
</user>

解析的結果是一個關聯數組:

Array (
    [0] => Array (
        [name] => USER
        [content] =>
        [child] => Array(
            [0] => Array(
                [name] => NAME
                [attrs] => Array([ID] => 1)
                [content] => John Mal
            )
            [1] => Array(
                [name] => ADDR
                [content] => 123 N 45
            )
            [2] => Array(
                [name] => PHONE
                [attrs] => Array([ID] => 5)
                [content] => 555.55.222
            )
        )
    )
)

我的問題是如何遍歷數組並獲取內部信息。 例如,我想獲得第一個idname -tag的內容,因此要在單獨的一行中輸入,因為在此之后,我想將所有信息寫入文本文件中。 怎么做? 任何幫助都非常感謝。

該解析函數對於您要實現的目標似乎並不特別有用。
可能SimpleXML感興趣。

<?php
$user = new SimpleXMLElement(data());
echo 'name=', $user->name,' id=', $user->name['id'], PHP_EOL;
echo 'addr=', $user->addr, PHP_EOL;
echo 'phone=', $user->phone,' id=', $user->phone['id'], PHP_EOL;



function data() {
    return <<< eox
<?xml version="1.0" encoding="utf-8"?>
<user>
   <name id="1">John Mal</name>
   <addr>123 N 45</addr>
   <phone id="5">555.55.222</phone>
</user>
eox;
}

我會為諸如DOMSimpleXml類的解析器投票,以獲取數組上的強大功能。 如果您必須使用數組...

這是直接訪問復雜數組中特定基准的方法:

var_dump($a[0]['child'][0]['content']);

輸出:

string(8) "John Mal"

迭代:

foreach ($a as $set) {

    echo $set['name'] . PHP_EOL;
    echo $set['content'] . PHP_EOL;
    echo "----------------" . PHP_EOL;

    foreach ($set['child'] as $item) {

        foreach ($item as $key => $value) {

            echo "$key: $value" . PHP_EOL;
        }
    }
}    

輸出:

USER
CONTENT
----------------
name: NAME
attrs: Array
content: John Mal
name: ADDR
content: 123 N 45
name: PHONE
attrs: Array
content: 123.345  

在實際操作中查看並嘗試使用它: https : //eval.in/530409

暫無
暫無

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

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