jas*_*n_m 16 php foreach object stdclass
我使用以下代码从使用Soap的网站获取数据.
$client = new SoapClient('http://some.url.here');
class SMSParam {
public $CellNumber;
public $AccountKey;
public $MessageCount;
public $MessageBody;
public $Reference;
}
$parameters = new SMSParam;
$parameters -> AccountKey = "$sms_key";
$parameters -> MessageCount = "25";
$Result = $client->GetIncomingMessages($parameters);
echo "<pre>";
print_r($Result);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
以下是输出示例:
stdClass Object
(
[GetIncomingMessagesResult] => stdClass Object
(
[SMSIncomingMessage] => Array
(
[0] => stdClass Object
(
[OutgoingMessageID] => data
[Reference] => data
[MessageNumber] => data
[PhoneNumber] => data
[Message] => data
[ReceivedDate] => data
)
[1] => stdClass Object
(
[OutgoingMessageID] => data
[Reference] => data
[MessageNumber] => data
[PhoneNumber] => data
[Message] => data
[ReceivedDate] => data
)
[2] => stdClass Object
(
[OutgoingMessageID] => data
[Reference] => data
[MessageNumber] => data
[PhoneNumber] => data
[Message] => data
[ReceivedDate] => data
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
如果只返回1个结果,我可以简单地做这样的事情:
$reference = $result->GetIncomingMessagesResult->SMSIncomingMessage->Reference;
Run Code Online (Sandbox Code Playgroud)
那么我将如何处理多个结果呢?
任何帮助将不胜感激.
Tom*_*igh 40
它是一个数组,因此您可以使用foreach以下方法轻松遍历它:
foreach ($result->GetIncomingMessagesResult->SMSIncomingMessage as $message) {
echo $message->Reference;
}
Run Code Online (Sandbox Code Playgroud)
但是值得注意的是,SoapClient默认情况下,只有当数组中有多个值时,PHP 才会将数组作为PHP数组返回 - 如果只有一个值,则只获得该值(不包含在数组中).解决这个一个简单的方法是使用选项SOAP_SINGLE_ELEMENT_ARRAYS在SoapClient构造函数; 这将防止此行为并确保您始终获得数组.