我有通过SOAP客户端返回的std对象,我正在尝试读出所有的名称/符号。
我正在使用的代码如下,但我在第二个foreach语句中的foreach中一直无效。
有什么想法吗?
object(stdClass)#3 (1) {
["ListMoney"]=> object(stdClass)#4 (3) {
["Outcome"]=> string(7) "Success"
["Exchange"]=> object(stdClass)#5 (1) {
["Market"]=> string(9) "CHICMERCX"
}
["Money"]=> object(stdClass)#6 (1) {
["Currency"]=> object(stdClass)#7 (2) {
["Symbol"]=> string(1) "$"
["Name"]=> string(3) "USD"
}
["Currency"]=> object(stdClass)#7 (2) {
["Symbol"]=> string(1) "#"
["Name"]=> string(3) "CND"
}
}
}
使用此代码:
foreach ($result->ListMoney as $ListMoney) {
foreach ($ListMoney->Money as $Money) {
foreach ($Money->Currency as $Currency) {
echo $Currency->Symbol;
}
}
}
答案 0 :(得分:3)
您有几个foreach
个循环过多,$ListMoney->Money
例如已经为您提供了currency
:
foreach ($result->ListMoney as $ListMoney) {
foreach ($ListMoney->Money as $Money) {
foreach ($Money->Currency as $Currency) {
echo $Currency->Symbol;
}
}
}
应该是这样的:
foreach ($result->ListMoney->Money as $Currency) {
echo $Currency->Symbol;
}
如果使用更多内部循环,则会遇到无效参数,因为例如$result->ListMoney->Outcome->Money
不存在。
请注意,通过使用foreach ($result->ListMoney as ...
之类的语法,您将跳过嵌套对象中的级别并直接进入第二级。这适用于您的所有foreach
循环。