数组而不是数组PHP中的SimpleXMLElement对象?

时间:2013-06-06 07:03:42

标签: php xml arrays object

我想知道如何将XML内容添加到普通数组中,而不将其添加为对象。例如,我有这个XML:

<example>
   <n1>
       <1>I am one</1>
       <2>I am two</2>
   </n1>

   <n2>
       <1>I am one</1>
       <2>I am two</2>
   </n2>

   <n3>
       <1>I am one</1>
       <2>I am two</2>
   </n3>
</example>

我将XML添加到变量中:

$xml = simplexml_load_file('xlmfile');

现在,我创建了一个空的错误:

$exarray = array();

现在,当我想将n3添加到$ exarray时,我可以这样做:

array_push($exarray,$xml[2]);

现在,当你print_r($ exarray)时,你会看到:

[0] => SimpleXMLElement Object ( [n1] => I am one [n2] => I am two

所以,这是一个已添加到$ exarray的对象,但是假设您不想将对象添加到$ exarray而是一个数组(nr3 = index 2),如何将nr3添加为数组到$ exarray?另外,如果你最终希望$ exarray是这样的:

[0] => ( [n1] => I am one [n2] => I am two )
[1] => ( [n1] => I am one [n2] => I am two )
[2] => ( [n1] => I am one [n2] => I am two )

Echo $exarray[0][1] to return: I am two

可能吗?

2 个答案:

答案 0 :(得分:2)

是的,有可能 - 你可以做到

  

$ array =   json_decode(json_encode((阵列)simplexml_load_string($ XML)),1);

以数组格式获取xml,然后从数组中获取数据

答案 1 :(得分:0)

你可以使用像

这样的东西
 $xml = new SimpleXMLElement($xml);

 foreach ($xml->n1 as $element) {   
       foreach($element as $val) {    
            echo "$val";   
       } 
  }

并更改foreach以将值分配给带有计数器的数组。