Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将SimpleXMLElement对象存储到数组时出现问题_Php_Arrays_Object_Simplexml - Fatal编程技术网

Php 将SimpleXMLElement对象存储到数组时出现问题

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] =>

这基本上是我的simplexmlobject数组,我想以某种方式操作它,并从f元素开始取出数据。我想把Company、marktest、Intern这些词存储到一个数组中。我似乎不知道如何使用php中的foreach循环来实现这一点,而它的结构太疯狂了

为了获取这些数据的所有值,我在代码的一部分中这样做,其中getUsers()对提供simplexml的服务进行api调用:

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);