我正在尝试从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)
一样?非常感谢!
答案 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);