Rumah > pembangunan bahagian belakang > tutorial php > 继续昨天的PHP多维数组转换成XML数据格式的有关问题

继续昨天的PHP多维数组转换成XML数据格式的有关问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-13 12:36:16
asal
861 orang telah melayarinya

继续昨天的PHP多维数组转换成XML数据格式的问题
首先要感谢昨天的两位朋友:jordan102和xuzuning
帖子链接:http://bbs.csdn.net/topics/390609227

他们二位提供的方法测试确实可行,实在。

但是在项目的开发过程中,又发现这个项目太变态了,居然还有这样的情况

PHP数组:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$ar=array( <br />

    "auth"=> array(<br />

        "user"=>  "user001",<br />

        "password"=> "pass001",<br />

        "context"=>  "1" <br />

    ),<br />

    "task"=> array(<br />

                    "code"=>"0101",<br />

                    "item"=>array(<br />

                        "title"=>"abc",<br />

                        "web"=>array(<br />

                            "name"=>"baidu.com",<br />

                            "ip"=>"1.2.3.4",<br />

                        ),<br />

                        "web"=>array(<br />

                            "name"=>"sina.com",<br />

                            "ip"=>"1.1.1.1",<br />

                        ),<br />

                        "confirm order"=>"1",<br />

                    ),<br />

                    "reply_to"=>"info@xxx.com",<br />

    ),<br />

);<br />

Salin selepas log masuk


注意看里面的item节点下面,有两个web的子节点,实际上web子节点可能还有好几个,一般是在2-4个左右

现在的转换程序代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

$xml = simplexml_load_string('<request />');<br />

create($ar, $xml);<br />

$xmlData $xml->saveXML();<br />

echo $xmlData;<br />

<br />

function create($ar, $xml) {<br />

    foreach($ar as $k=>$v) {<br />

        if(is_array($v)) {<br />

            $x = $xml->addChild($k);<br />

            create($v, $x);<br />

        }else $xml->addChild($k, $v);<br />

    }<br />

}

Salin selepas log masuk


这段代码比较效率比较高,但是在遇到相同名称节点的时候,就过滤了只保留最后一个节点,这样最后输出的结果变成了,注意看,把web的name值为baidu.com的就漏掉了。

输出结果变成:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?xml version="1.0"?><br />

<request><br />

    <auth><br />

        <user>user001</user><br />

        <password>pass001</password><br />

        <context>1</context><br />

    </auth><br />

    <task><br />

        <code>0101</code><br />

        <item><br />

            <title>abc</title><br />

            <web><br />

                <name>sina.com</name><br />

                <ip>1.1.1.1</ip><br />

            </web><br />

            <confirm order>1</confirm order><br />

        </item><br />

        <reply_to>info@xxx.com</reply_to><br />

    </task><br />

</request><br />

Salin selepas log masuk

那个转换的函数,我改了又改,还是一直无法输出完整的数据,头疼……

求各位前辈有什么好的方法?

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan