Php 将SimpleXMLElement对象存储到数组时出现问题
这基本上是我的simplexmlobject数组,我想以某种方式操作它,并从f元素开始取出数据。我想把Company、marktest、Intern这些词存储到一个数组中。我似乎不知道如何使用php中的foreach循环来实现这一点,而它的结构太疯狂了 为了获取这些数据的所有值,我在代码的一部分中这样做,其中getUsers()对提供simplexml的服务进行api调用:Php 将SimpleXMLElement对象存储到数组时出现问题,php,arrays,object,simplexml,Php,Arrays,Object,Simplexml,这基本上是我的simplexmlobject数组,我想以某种方式操作它,并从f元素开始取出数据。我想把Company、marktest、Intern这些词存储到一个数组中。我似乎不知道如何使用php中的foreach循环来实现这一点,而它的结构太疯狂了 为了获取这些数据的所有值,我在代码的一部分中这样做,其中getUsers()对提供simplexml的服务进行api调用: Array ( [0] => SimpleXMLElement Object ( [record] =>
Array ( [0] =>
SimpleXMLElement Object ( [record] =>
SimpleXMLElement Object ( [f] =>
Array ( [0] => Company
[1] => Company
[2] => Mark Test
[3] => Intern
[4] => Administrative
[5] => Account
[6] => img.png
[7] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 18 ) )
[8] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 21 ) )
[9] => emailtest@gmail.com
[10] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 178 ) )
[11] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 177 ) )
[12] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 179 ) )
[13] => SimpleXMLElement Object ( [@attributes] => Array ( [id] => 168 ) ) )
[update_id] => 12102222262043 ) ) )
DOMDocument类在这种情况下的性能比SimpleXML稍微好一点(当您想做稍微复杂一点的事情时) 首先加载文档:
$dom=newdomdocument();
$dom->load($filename);
然后获取所有
节点:
//获取所有节点的列表,然后使用foreach循环遍历这些节点
$records=$dom->getElementsByTagName('records');
要获取所有
节点的子节点,请执行以下操作:
$allChildren=array();
foreach($records作为$recordSet){
foreach($recordSet->childNodes作为$child){
$allChildren[]=$child;
}
}
现在,假设您希望在第一个
节点中输入
的值:
$value=$records->item(0)->getElementsByTagName('first_name')->item(0)->nodeValue;
请注意,getElementsByTagName
的返回值是DOMNodeList
s而不是数组
如果您了解Javascript,这个类的行为非常类似于DOM是Javascript,这是一个额外的好处
另见:
那么您想取出文档中的
f
之后的所有内容吗?还有,这个封闭的数组是从哪里来的?您能发布生成此输出的代码吗?是的,我希望所有这些元素都放入一个不太复杂的数组中。为此,您最好使用DOMDocument而不是SimpleXML。我很乐意使用DOMDoment编写一个示例,但是当涉及到这类东西时,SimpleXML有点太混乱了。。。我应该知道,我实际上用SimpleXML a数组转换修复了一个大问题,但它要到PHP 5.4发行版才会出现。嗯,确定我要失去什么吗?尝试这样做很痛苦:(为了澄清……您需要的是一个包含所有
节点或
节点的所有子节点的数组?好的,我们将尝试一下,希望结果会更好:)感谢您的时间和努力。不客气。如果您遇到与此代码相关的任何问题,只需回复此线程,我会立即加入,看看我能做些什么。很高兴听到。在我看来,SimpleXML描述了您应该使用它的任务类型,而不是简单易用。即使是远程复杂的任务,我也更喜欢DOMDocument。
$xml = $getUser->getUsers();
$records = $xml->xpath('//records');
print_r($records);