我正在尝试从soap服务访问对象。我的目标是获取ID为53的属性中的值。在此之前,我使用simplexml_load_string来获取下面看到的对象。但是在尝试使用 - >访问对象时或['']关键符号会引发错误。我相信密钥中的@导致了问题。
我得到以下结果:
作为vardump:
object(SimpleXMLElement)[1951]
public '@attributes' =>
array (size=1)
'id' => string '53' (length=2)
作为dd结果:
SimpleXMLElement {#1951 ▼
+"@attributes": array:1 [▼
"id" => "53"
]
}
调试部分:
$result =$service->call('DisplayCategories', [$data]);
$result = simplexml_load_string((string)$result->DisplayCategoriesResult->any);
// dd($result);
$result = $result->categories->category;
//dd($result);
$tempArr = array();
foreach($result as $item)
{
// var_dump(html_entity_decode($item));
var_dump($item);
dd(((object)$item));
// dd(preg_replace(array("@"),'',$item));
// dd(@simplexml_load_string($item));
dd($item->attributes('id'));
$simple = $item->attributes('id');
$resulters = ($item->attributes('id'));
dd($resulters);
}
$this->setResult($result);
});
答案 0 :(得分:2)
@attributes
是一个返回数组的函数,不直接访问它。只需将其别名为变量,然后在完成后使用索引。
$atts = $item->attributes();
dd($atts['id']);
另外,作为旁注,cast
您的对象在string
转储之前转移到simple xml object
,否则您会看到一些你可能没有的时髦的东西。无论如何都要找。