好了SOAP響應,所以我使用SOAP和使用「的foreach」循環輸出狀態請求從服務國家和城市,並在各在這些迭代中,我使用另一個'foreach'循環輸出每個州內的城市。PHP:使用嵌套「的foreach」循環輸出XML數據來自沒有工作
首先,SOAP調用:
$client = new SoapClient("https://devxml.#####.com/golfService.asmx?wsdl", array(‘features’ => SOAP_SINGLE_ELEMENT_ARRAYS));
$regionList = $client->Areas(
array(
'Hdr' => array(
'ResellerId' => '#####',
'SourceCd' => 'A',
'UserIp' => '207.58.123.121',
'gsDebug' => '1'
),
'Req' => array(
'CountryID' => 'USA',
'RegionID' => ''
)
)
)
...返回下面的XML:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<AreasResponse xmlns="http://xml.####.com/">
<AreasResult>
<RetCd>0</RetCd>
<RetMsg />
<Countries>
<Country>
<id>USA</id>
<nm>United States</nm>
<Regions>
<Region>
<id>AZ</id>
<nm>Arizona</nm>
<Areas>
<Area>
<id>Phoenix Northeast</id>
<nm>Phoenix Northeast</nm>
</Area>
</Areas>
</Region>
<Region>
<id>FL</id>
<nm>Florida</nm>
<Areas>
<Area>
<id>Ft. Myers/Naples</id>
<nm>Ft. Myers/Naples</nm>
</Area>
<Area>
<id>Miami/Ft. Lauderdale</id>
<nm>Miami/Ft. Lauderdale</nm>
</Area>
</Areas>
</Region>
</Regions>
</Country>
</Countries>
</AreasResult>
</AreasResponse>
</soap:Body>
</soap:Envelope>
現在,這裏就是我如何在我的PHP處理這樣的:
foreach ($regionList->AreasResult->Countries->Country->Regions->Region as $region):
echo $region->nm . ": ";
foreach ($region->Areas->Area as $area):
echo $area->nm . ", ";
endforeach;
echo "<br />";
endforeach;
理想情況下,這會輸出爲:
亞利桑那州鳳凰城東北,
佛羅里達州:FT。邁爾斯/那不勒斯,邁阿密/英尺。勞德代爾堡,
但是,沒有!它顯示如下:
亞利桑那:,,
佛羅里達州:英尺。邁爾斯/那不勒斯,邁阿密/英尺。勞德代爾堡,
兩個後逗號「亞利桑那:」意味着有兩個記錄,但只有一個。更令人氣憤的是它不會輸出dang Area的值。 我在做什麼錯?幫助我,StackOverflow,你是我唯一的希望!
我們展示的代碼。 – 2013-03-19 18:10:18
對不起!我在寫完之前意外地發佈了這個問題。 – Josh 2013-03-19 18:37:03
不應該是'foreach($ region-> Areas-> Area)'嗎? – 2013-03-19 21:52:26