2013-04-14 83 views
0

下面的代碼是使用PHP並從XML響應文件返回價格。PHP中的基本數學Simplexml

$price = $result->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice; //lowest new price 
$listPrice = $result->Items->Item->Offers->Offer->OfferListing->Price->FormattedPrice; //list price 

如果我回聲$價格或$ listPrice它的工作原理

我希望得到這兩個價格之間的差異,但我收到NULL,如果我做

$savings = $listPrice - $price; or $savings = ($listPrice - $price); 

任何援助是值得歡迎

回答

2

你很可能試圖從字符串中減去一個字符串。您需要將這些值轉換爲數字類型。如果你使用的價格工作,你可能會想浮點數:

$price = floatval($result->Items->Item->OfferSummary->LowestNewPrice->FormattedPrice); //lowest new price 
$listPrice = floatval($result->Items->Item->Offers->Offer->OfferListing->Price->FormattedPrice); //list price 

$savings = $listPrice - $price; 
1

我假設$ price和$ listprice是數字(整數或雙精度),所以當它們單獨回顯時它們可能是數字,但它們可能是帶有空格的字符串t帽子阻止他們被解析。嘗試使用trim()刪除空格(例如$ price = trim($ price))。

+0

你可以測試是否$價格$ listPrice是通過使用is_numeric號() – Fractaly

+0

'is_numeric'是幾乎從來沒有你想要的功能,因爲它接受諸如「1.5e10」(科學記數法)之類的東西。無可否認,在這裏取決於輸入可能是合適的,但是人們在使用'ctype_digit'時(檢查一個字符串完全由數字組成)通常會使用它。 – IMSoP

0

雖然它們可能看起來像是數字,但爲了確保它們可能是值得的。

$savings = floatval($listPrice) - floatval($price);