我有这个
$xml = new SimpleXMLElement($output);
$names = $xml->param->value->array->data;
这是输出
SimpleXMLElement Object
(
[value] => Array
(
[0] => SimpleXMLElement Object
(
[struct] => SimpleXMLElement Object
(
[member] => SimpleXMLElement Object
(
[name] => school
[value] => SimpleXMLElement Object
(
[struct] => SimpleXMLElement Object
(
[member] => Array
(
[0] => SimpleXMLElement Object
(
[name] => schoolid
[value] => SimpleXMLElement Object
(
[string] => 49961
)
)
[1] => SimpleXMLElement Object
(
[name] => schoolname
[value] => SimpleXMLElement Object
(
[string] => Millersville Elementary School
)
)
我正试图获得“schoolname”值
使用
for($i=0;$i<count($names);$i++) {
echo $names[0][$i]->struct->member->value->struct->member[0]->value.'<br>';
}
我也尝试过字符串($ names [0]等)而没有成功。我想我在开头用$ names [0] [$ i] ??
搞乱了订单非常感谢任何帮助!
答案 0 :(得分:6)
如果你感到懒惰,请考虑learning XPath。这是解决问题的简单方法,如果你不想通过 - &gt;的永无止境的条纹来解决它:)
学习XPath也是一项投资。当您处理XML时,您需要了解它。 这是XML或DOM的SQL (参见 DOMXPath )。
我知道这不是一个真正的答案,但是花一些时间和我在这里指出的是值得的,也会解决你的问题。
答案 1 :(得分:1)
以下是使用xpath获取fieldname和values
的解决方案$cols = $xml->xpath('//member/value/struct/member/name');
$names = $xml->xpath('//member/value/struct/member/value/*');
for($i=0;$i<count($cols);$i++) {
echo $cols[$i].' = '.$names[$i].'<br>';
}
对于处理xml的人来说,xpath是必须的!
答案 2 :(得分:0)
结果$ name是valuse(对象和数组)的混合。
尝试将$ name转换为仅对象或仅转换为数组。
您发布的示例不完整,无法尝试搜索它。
答案 3 :(得分:0)
我最近有一个类似的问题,我最后写了一些东西,将整个结构扁平化为数组中的数组,更加可追溯,但对于手头的问题,我经常发现每个阶段和构建对var_dump / print_r都有帮助它逐级升级。
$ names是一个对象,所以在我看来你想要的引用是:
$names->value[0]->struct->member->value->struct->member['value'][1]->value;
编辑:我现在忽略了循环部分,因为我认为你需要重新计算你的count(),它似乎需要计数($ names-&gt; value),这是数组学校如果我是正确的,在这种情况下,$i
将进入第一个[0]
。