2013-10-27 27 views
0

我有一個數據庫字段調用餘額。這是€10,000。我也有一個叫做7500歐元的領域。我想要的是當我的場地平衡大於我的場地限制時,然後迴應:「請在開始前付款。」;更高還是沒有PHP

我嘗試這樣做:

<?php 
if ($row['balance'] > $row['limit']){ 
echo "Please, pay before start."; 
} 
?> 

它不工作。也許是因爲數字中的逗號?我怎樣才能檢查這個?

+0

如果你將存儲過程作爲字符串與千位分隔符和貨幣符號,這是不好的做法 - 因爲你說的原因。將價格存儲爲數字,並將美化作爲渲染過程的一部分。 – halfer

+0

哇!你用字符串存儲錢嗎? –

+0

從不把貨幣存爲浮動貨幣,它們是不準確的。只作爲整數存儲。 – Atle

回答

1

您需要解析數出來的貨幣價值,才能夠正確地對它們進行比較:

$balance = floatval(preg_replace('/[^\d\.]/', '', $row['balance'])); 
$limit = floatval(preg_replace('/[^\d\.]/', '', $row['limit'])); 

if ($balance > $limit) { 
    echo "Please, pay before start."; 
} 

Demo!

+0

非正則表達式解決方案會更快 – Thew

+0

不確定性能會在這裏成爲一個問題。正則表達式也不一定很慢。 –

+0

哦,謝謝!這適用於我! –

3

這種想法是不好的,你應該嘗試小數/數字型的數據庫。您可以使用number_formatmoney_format來顯示您偏好的格式。那麼你可以很容易地檢查你的狀況

+2

我刪除了我的答案。這是一個更好的解決方案。 – Thew

+1

是的,儘管參見@ Atle關於使用整數的評論。 – halfer

+1

@halfer謝謝。我理解這一點並編輯我的答案。這非常重要。我也閱讀mysql文檔[浮點問題](http://dev.mysql.com/doc/refman/5.0/en/problems-with-float.html)和[固定點類型](http:// dev。 mysql.com/doc/refman/5.0/en/fixed-point-types.html) – Imran

相關問題