$this->totplpremium is 2400
$this->minpremiumq is 800
那麼,爲什麼這將永遠返回真實?!基本的PHP邏輯問題
if ($this->totplpremium < $this->minpremiumq){
這些數字是絕對正確的,我絕對使用「小於」符號。我無法解決這個問題。
$this->totplpremium is 2400
$this->minpremiumq is 800
那麼,爲什麼這將永遠返回真實?!基本的PHP邏輯問題
if ($this->totplpremium < $this->minpremiumq){
這些數字是絕對正確的,我絕對使用「小於」符號。我無法解決這個問題。
也許存在某種轉換問題。嘗試使用
var_dump($this->totplpremium);
var_dump($this->minpremiumq);
if ($this->totplpremium < $this->minpremiumq){
...
}
,看看數據類型都還好吧
編輯:有一些工具,使您可以更輕鬆地調試你的代碼比使用調試輸出 - http://xdebug.org/(一個擴展庫,使您的調試)和http://en.wikipedia.org/wiki/PHPEd(。這是商業,我不知道是否有替代)
可能是帶有空格的字符串。 '2400> 800',''2400「>」800「',但是'」2400「<」800「' - 由於空格,它們不會被打成int型,而按字典順序2400則更小。 – Tgr 2010-05-12 09:24:45
2400 *當比較字符串時,IS *小於800。 – 2010-05-12 09:27:15
@Salman A:並非如此。從[documentation](http://www.php.net/manual/en/language.operators.comparison.php):*如果您將數字與字符串進行比較或者比較涉及數字字符串,則將每個字符串轉換* – Tgr 2010-05-12 09:38:06
作爲一個字母的比較,下面的說法是正確的:
"800" > "2400"
(因爲8大於2)
這實際上是假的。在進行比較之前,PHP type-juggles將包含純數字的字符串轉換爲數字。 – Tgr 2010-05-12 09:49:48
嘗試用INTVAL包裝的「數字」:
if (intval($this->totplpremium) < intval($this->minpremiumq)){
//...
}
如果按預期工作,那麼你真的需要使用的GetType檢查什麼類型totplpremium和minpremiumq是,例如:
print(gettype($this->totplpremium));
print(gettype($this->minpremiumq));
有了這些信息,您應該能夠查明您的錯誤。
<?php
$totplpremium="2400 ";
$minpremiumq="800";
var_dump(($totplpremium < $minpremiumq)?true:false);
var_dump(((int)$totplpremium < (int)$minpremiumq)?true:false);
?>
我想你應該仔細檢查這些值來自哪裏或確保它們是整數。
祝你好運!
是的,2400之後的空間是爲了一個目的:強迫它們被比作絃樂! – Henrik 2010-05-12 10:09:08
你能展示一個完整的工作代碼示例嗎? – 2010-05-12 09:17:06
嘗試添加調試輸出(即使只是一組簡單的回波線),以確保兩個變量是2400和800,如果它們是,我會看看你的大括號,看看是否有任何不合適的地方。 – Sukasa 2010-05-12 09:17:26
我猜的值有錯誤。使用'var_dump($ this)'併發布輸出。 – ZeissS 2010-05-12 09:17:51