php - 使用属性访问 PHP SoapClient 响应元素中的值
问题描述
我在处理 PHPSoapClient
响应时遇到问题...
我知道我可以使用对象表示法访问响应 XML 元素:
$client = new SoapClient($wsdl,$options);
$data=$client->Method(array('Param'=>"Value"));
$tmp = $data->Results->Asset->Attributes>Attribute;
var_dump($tmp);
问题是当我尝试使用某些属性到达元素时...这是 XML 响应的一部分:
<Results>
<Asset>
<Attributes>
<Attribute Name="ID">0</Attribute>
<Attribute Name="FirstName">John</Attribute>
<Attribute Name="Size">Large</Attribute>
</Attributes>
</Asset>
<Asset>
<Attributes>
<Attribute Name="ID">1</Attribute>
<Attribute Name="FirstName">Bob</Attribute>
<Attribute Name="Size">Medium</Attribute>
</Attributes>
</Asset>
<Asset>
<Attributes>
<Attribute Name="ID">2</Attribute>
<Attribute Name="FirstName">Frank</Attribute>
<Attribute Name="Size">Small</Attribute>
</Attributes>
</Asset>
</Results>
如何使用对象表示法从具有属性“大小”的元素“属性”中获取值?在print_r
我得到一个stdClass
内部数组(它只是它的一部分)
[0] => stdClass Object
(
[Attributes] => stdClass Object
(
[Attribute] => Array
(
[0] => stdClass Object
(
[_] => 0
[Name] => ID
)
[1] => stdClass Object
(
[_] => John
[Name] => FirstName
)
[2] => stdClass Object
(
[_] => Large
[Name] => Size
)
)
)
)
[1] => stdClass Object
(
[Attributes] => stdClass Object
(
[Attribute] => Array
(
[0] => stdClass Object
(
[_] => 1
[Name] => ID
)
[1] => stdClass Object
(
[_] => Bob
[Name] => FirstName
)
[2] => stdClass Object
(
[_] => Medium
[Name] => Size
)
)
)
)
[2] => stdClass Object
(
[Attributes] => stdClass Object
(
[Attribute] => Array
(
[0] => stdClass Object
(
[_] => 2
[Name] => ID
)
[1] => stdClass Object
(
[_] => Frank
[Name] => FirstName
)
[2] => stdClass Object
(
[_] => Small
[Name] => Size
)
)
)
)
我知道我可能可以使用
$client->__getLastResponse()
并解析,SimpleXMLElement
但对我来说似乎不是最佳选择......
解决方案
您应该可以在$data->Results->Asset->Attributes->Attribute[0]->_
.
如果您想搜索属性为“size”的值,那么您可能需要一个循环。很难用这么小的样本来判断你的数据是什么样的,但我不相信更简洁的方法array_column()
可以适用于这种结构。
<?php
foreach ($data->Results->Asset as $Asset) {
foreach ($Asset->Attributes->Attribute as $Attribute) {
if ($Attribute->Name === "Size") {
echo $Attribute->_;
}
}
}
推荐阅读
- angular - mat-icon-button点击上的可扩展mat-table
- php - 未安装 XAMPP 的 PHP 练习
- delphi - 在 Windows 防火墙中关闭 TCP 端口
- javascript - 如何将提及标签文本转换为
? (VUEJS) - javascript - 如何通过编辑 blogspot html 代码制作一个完全空白的网站,以便我可以从头开始自定义整个网站?
- swift - 按请求呼叫请求 Alamofire swift
- spring - Spring 表达式语言问题
- unity3d - 为什么单击游戏视图中的播放按钮后,与游戏视图关联的相机会旋转(0,0,0)?(默认情况下)
- java - 即使在写入退出后,命令提示符也不会在完成后关闭
- kubernetes-helm - Helm 图表不允许我使用带有特殊字符 ex '/' 或 '=' 的值