我正试图从XML构建一个关联数组。以下是xml的样子(总共大约70个"item"条目):
<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)
?非常感谢!
像一样尝试
$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;
}
将xml中每个<item>
中的name
和value
添加到数组的一个可能的解决方案是首先检查$item->getName()
是否为"item"。
然后可以使用array_push向$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);
将导致:
array (size=2)
0 =>
array (size=2)
'name' => string 'Name' (length=4)
'value' => string '24' (length=2)
1 =>
array (size=2)
'name' => string 'Name' (length=4)
'value' => string '24' (length=2)