无法从xml构建关联数组

时间:2015-11-24 17:15:16

标签: php arrays xml

我正在尝试从XML构建关联数组。这是xml的样子(总共约70个'项目'条目):

<xmldata>
<source>source</source>
<release>release</release>
 <item>
  <name>Name</name>
  <date>1/1/2015</date>
  <time>10AM</time>
  <value>24</value>
 </item>
 <item>
  <name>Name</name>
  <date>1/1/2015</date>
  <time>10AM</time>
  <value>24</value>
 </item>
etc
...
</xmldata>

这是我到目前为止所尝试的内容:

$data = file_get_contents("xml url");
$xml = simplexml_load_string($data);
$counter = 1;
$new_array = array();
foreach($xml->children() as $item)
{
  if($counter > 2)
  {
    $temp_array = array('name' => $item->name, 'value' => $item->value);
    array_push($newArray, $temp_array);
  }
}

我正在尝试构建一个如下所示的关联数组:

$new_array = array(array("name"=>name, "value"=>value),array("name"=>name,  "value"=>value),array("name"=>name, "value"=>value), etc);

它不起作用。我尝试打印数组以查看它是否已形成,但我得到一个0数组,1数组等的列表。

我也试过array_merge(), and $new_array[] = $item, and array_push($new_array, array("name"=>name, "value"=>value));

是否有一种将关联数组附加到数组的首选方法?就像python中的array.append(dict)一样?非常感谢!

2 个答案:

答案 0 :(得分:0)

尝试那样

$data = file_get_contents("xml url");
$xml = simplexml_load_string($data);
$counter = 1;
$new_array =[];
foreach($xml->children() as $item)
{
    $new_array[$counter]['name'] = $item->name;
    $new_array[$counter]['value'] = $item->value;
    $counter += 1;              
}

答案 1 :(得分:0)

将xml中每个name的{​​{1}}和value添加到数组的可能解决方案是首先检查<item>是否为&#34;项&#34;

然后,您可以使用array_push$item->getName()添加新数组。

例如:

$new_array

将导致:

$data = file_get_contents('xml url');
$xml = simplexml_load_string($data);
$new_array = array();

foreach($xml->children() as $item) {
    if ($item->getName() === "item") {
        array_push(
            $new_array, [
                "name" => $item->name->__toString(),
                "value" => $item->value->__toString()
            ]
        );
    }
}

var_dump($new_array);