我有一個看起來像這樣的XML文件:的foreach XML和開關
<services>
<service>
<code>MODULE_1</code>
<name>Regular</name>
<price>14.85</price>
</service>
<service>
<code>MODULE_2</code>
<name>Express</name>
<price>22.50</price>
</service>
</services>
$result
檢索來自另一個服務器上的文件。我的代碼如下所示:
$methods = array() ;
$xmlQuotes = new SimpleXMLElement($result) ;
foreach($xmlQuotes as $quote) {
$add = 0 ; $f = 0 ;
switch ($quote->code) {
case "MODULE_1" ;
if ((in_array("Regular", $this->allowed_methods))) {
$add = MODULE_1_HANDLING ; $f = 1 ;
$id = "m_1";
$cost = $quote->price;
$description = $quote->name;
}
break;
case "MODULE_2" ;
if ((in_array("Express", $this->allowed_methods))) {
$add = MODULE_2_HANDLING ; $f = 1 ;
$id = "m_2";
$cost = $quote->price;
$description = $quote->name;
}
break;
}
if (($cost > 0) && ($f == 1)) {
$cost = $cost + $add ;
$methods[] = array('id' => "$id",
'title' => "$description",
'cost' => "$cost");
}
}
$this->quotes['methods'] = $methods;
這是所有的好,直到最後一點 - 當我正在使用的代碼,該$methods
陣列沒有返回正確$cost
和$description
爲它匹配$code
,而是返回我的第一個模塊的價格和描述。它看起來是這樣的:
MODULE_1: Regular: 14.85
MODULE_2: Regular: 14.85
我快要瘋了這裏,因爲我顯然不知道我在做什麼,所以任何幫助,將不勝感激。
不,這不是它。我只是試圖刪除if(只留下案例),但它沒有做到這一點,它仍然是一樣的。 – user1078494 2013-03-03 00:35:49
順便說一句,這可能會令人困惑 - in_array實際上檢查數據庫中的設置,而不是來自xml文件的設置。 – user1078494 2013-03-03 00:37:53
好的,我們來調試一下。只要把'echo $ cost。 ',''之前'如果(($ cost> 0)blabla'並且提供給我的是什麼回聲 – Hast 2013-03-03 00:41:05