【发布时间】:2016-09-29 22:53:02
【问题描述】:
我目前正在这样做以构建一个名为 $tables 的数组,但想知道是否有更简单的方法来做到这一点?
$tables = array();
$abbr = $states_xml->xpath('//StateAbbr');
$names = $states_xml->xpath('//StateName');
// State Abbreviations...
while(list($key,$table) = each($abbr)) {
$tables[$key]['Abbr'] = (string) trim($table);
}
// State Names...
while(list($key,$name) = each($names)) {
$tables[$key]['Name'] = (string) trim($name);
}
是否可以一次性调用StateAbbr 和StateName 元素并将它们以与$tables 相同的格式输出到数组中?
因此,tables 数组将如下所示:
array(57) {
[0]=>
array(2) {
["Abbr"]=>
string(2) "AL"
["Name"]=>
string(7) "Alabama"
}
[1]=>
array(2) {
["Abbr"]=>
string(2) "AK"
["Name"]=>
string(6) "Alaska"
}
[2]=>
array(2) {
["Abbr"]=>
string(2) "AS"
["Name"]=>
string(14) "American Samoa"
}
... and so on...
基本上,$states_xml 看起来像这样:
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet
xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<StateAbbr>AL </StateAbbr>
<StateName>Alabama</StateName>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<StateAbbr>AK </StateAbbr>
<StateName>Alaska</StateName>
</Table>
<Table diffgr:id="Table3" msdata:rowOrder="2">
<StateAbbr>AS </StateAbbr>
<StateName>American Samoa</StateName>
</Table>
<Table diffgr:id="Table4" msdata:rowOrder="3">
<StateAbbr>AP </StateAbbr>
<StateName>AP</StateName>
</Table>
...
</NewDataSet>
</diffgr:diffgram>
我正在使用$states_xml = simplexml_load_string(THE STRING ABOVE); 将xml 加载到$states_xml。
无论如何要从这里的所有Table 元素中获取所有StateAbbr 和StateName 以一次性输出到数组中??对我来说似乎是可能的,但除了我目前正在做的方式之外,我不确定如何解决这个问题。
【问题讨论】: