经过一番努力,我相信这就是你想要的。
<?php
$oContext = stream_context_create(array("http" => array("header" => "Accept: application/xml")));
$sURL = "http://kunaki.com/HTTPService.ASP?RequestType=ShippingOptions&State_Province=NY&PostalCode=11204&Country=United+States&ProductId=PX0012345&Quantity=1&ProductId=PX04444444&Quantity=1&ResponseType=xml";
$oXML = simplexml_load_string(file_get_contents($sURL, false, $oContext));
$pOptions = isset($oXML->Option) && isset($oXML->Option[0]) ? $oXML->Option : array("error" => true);
echo "<html>";
echo "<head>";
echo "<title>XML Test</title>";
echo "</head>";
echo "<body>";
if(isset($pOptions["error"]))
{
echo "<h3>Sorry, wrong data returned.";
var_dump($pOptions);
}
else
{
echo "<select>";
for($i = 0, $iCount = count($pOptions); $i < $iCount; ++$i)
{
$sString = $pOptions[$i]->Description.", ";
$sString .= "Delivery Time: ".$pOptions[$i]->DeliveryTime." ";
$sString .= "($".$pOptions[$i]->Price.")";
echo "<option>".$sString."</option>";
}
echo "</select>";
}
echo "</body>";
echo "</html>";
?>
<select>
<option>
USPS First Class Mail, Delivery Time: 2-5 business days ($0.66)
</option>
<option>
UPS Ground, Delivery Time: 1-5 business days ($17.17)
</option>
<option>
UPS 2nd Day Air, Delivery Time: 2 business days ($30.42)
</option>
<option>
UPS Next Day Air Saver, Delivery Time: 1 business day ($50.17)
</option>
</select>
您的问题之一是,您只将数据放入下拉项的value属性中。
例子:
<option value="test"></option>
仅显示:
<select>
<option value="test"></option>
</select>
所以你所追求的,更像是这样:
<select>
<option>Test</option>
</select>
这就是for()循环发挥作用的地方,它将循环并显示所有返回的发货选项,不管有多少。
希望这有帮助!