获取对象中的数组 xml (simplexml_load_string)
Get array in object xml (simplexml_load_string)
我有一个 $xml
看起来像这样
SimpleXMLElement Object
(
[@attributes] => Array
(
[Total] => 450
[Count] => 4
[Start] => 0
)
[Code] => 0
[Item] => Array
(
[0] => SimpleXMLElement Object
(
[Person.P_Id] => 14845
)
[1] => SimpleXMLElement Object
(
[Person.P_Id] => 14844
)
[2] => SimpleXMLElement Object
(
[Person.P_Id] => 14837
)
[3] => SimpleXMLElement Object
(
[Person.P_Id] => 14836
)
)
)
现在我想让数组 Item
与另一个数组合并,但是当我尝试 $xml->Item
时,我只得到这个数组的第一个元素(即 14845
).当我使用 count($xml->Item)
时,它 returns 是真实值(即 4)。我是不是弄错了整个数组 Item
?
您没有说您是希望这些项目作为 SimpleXMLElements,还是只是 Person.P_Id
值。要获取对象,可以使用 xpath
获取数组:
$itemobjs = $xml->xpath('//Item');
print_r($itemobjs);
输出:
Array
(
[0] => SimpleXMLElement Object
(
[Person.P_Id] => 14845
)
[1] => SimpleXMLElement Object
(
[Person.P_Id] => 14844
)
[2] => SimpleXMLElement Object
(
[Person.P_Id] => 14837
)
[3] => SimpleXMLElement Object
(
[Person.P_Id] => 14836
)
)
如果您只想要 Person.P_Id
值,则可以使用 array_map
:
迭代该数组
$items = array_map(function ($v) { return (string)$v->{'Person.P_Id'}; }, $itemobjs);
print_r($items);
输出:
Array
(
[0] => 14845
[1] => 14844
[2] => 14837
[3] => 14836
)
我有一个 $xml
看起来像这样
SimpleXMLElement Object
(
[@attributes] => Array
(
[Total] => 450
[Count] => 4
[Start] => 0
)
[Code] => 0
[Item] => Array
(
[0] => SimpleXMLElement Object
(
[Person.P_Id] => 14845
)
[1] => SimpleXMLElement Object
(
[Person.P_Id] => 14844
)
[2] => SimpleXMLElement Object
(
[Person.P_Id] => 14837
)
[3] => SimpleXMLElement Object
(
[Person.P_Id] => 14836
)
)
)
现在我想让数组 Item
与另一个数组合并,但是当我尝试 $xml->Item
时,我只得到这个数组的第一个元素(即 14845
).当我使用 count($xml->Item)
时,它 returns 是真实值(即 4)。我是不是弄错了整个数组 Item
?
您没有说您是希望这些项目作为 SimpleXMLElements,还是只是 Person.P_Id
值。要获取对象,可以使用 xpath
获取数组:
$itemobjs = $xml->xpath('//Item');
print_r($itemobjs);
输出:
Array
(
[0] => SimpleXMLElement Object
(
[Person.P_Id] => 14845
)
[1] => SimpleXMLElement Object
(
[Person.P_Id] => 14844
)
[2] => SimpleXMLElement Object
(
[Person.P_Id] => 14837
)
[3] => SimpleXMLElement Object
(
[Person.P_Id] => 14836
)
)
如果您只想要 Person.P_Id
值,则可以使用 array_map
:
$items = array_map(function ($v) { return (string)$v->{'Person.P_Id'}; }, $itemobjs);
print_r($items);
输出:
Array
(
[0] => 14845
[1] => 14844
[2] => 14837
[3] => 14836
)