我有一个这样的数组,我通过SQL查询获取它
Array
(
[0] => Array
(
[iId] => 1
[sName] => Tom
)
[1] => Array
(
[iId] => 2
[sName] => Jhon
)
)
然后通过这个数组,我正在创建POST请求,并返回XML Object
SimpleXMLElement Object
(
[@attributes] => Array
(
[method] => userstats_xml
[version] => 2.0
)
[userstats] => SimpleXMLElement Object
(
[type] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 2
)
[test] => SimpleXMLElement Object
(
[output] => 1280
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 1
)
[test] => SimpleXMLElement Object
(
[output] => 6112
)
)
)
)
)
现在我正在尝试获取下面列出的数组,因为我可以分别从第一个数组和xml对象输出数据,但我需要在一行中完成,例如
<a href="sId">sName - volume</a>
以数组形式:
Array
(
[0] => Array
(
[iId] => 1
[sName] => Tom
[volume] => 6112
)
[1] => Array
(
[iId] => 2
[sName] => Jhon
[volume] => 1280
)
)
答案 0 :(得分:1)
您必须遍历XML响应并构建一个单维数组,其中iId作为键,xml的音量/输出作为值。
$xmlOutput =
Array
(
[1] => 6112
[2] = > 1280
)
然后,您可以使用上面的数组将新元素添加到您从SQL获取的数组中。请查看下面的代码段
$sqlOutput =
Array
(
[0] => Array
(
[iId] => 1
[sName] => Tom
)
[1] => Array
(
[iId] => 2
[sName] => Jhon
)
)
foreach($sqlOutput as $entry)
{
$entry['volume'] = $xmlOutput[$entry['iId']];
}
答案 1 :(得分:1)
迭代数组并使用ID通过XPath查询XML以获取“输出”值
foreach ($peopleArray as $i => $person) {
$xpathQuery = sprintf('//type[@id="%s"]/test/output', $person['iID']);
$result = $xml->xpath($xpathQuery);
if (isset($result[0])) {
$peopleArray[$i]['volume'] = (string) $result[0];
}
}
代码将获取数组中的每个ID并从中构造一个XPath查询。该查询查找文档中所有输出元素,这些元素是test元素的子元素,该元素必须是具有SQL数组中ID属性的type元素的子元素。如果找到结果,则输出元素的值将添加到当前迭代位置的SQL数组中。
有关优秀的XPath教程,请参阅http://schlitt.info/opensource/blog/0704_xpath.html。