2016-01-20 53 views
-1

我希望我的函數來執行以下操作:空/文本值得到治療爲「0」

如果價格0,返回free消息。

如果價格是正數,則顯示價格。

如果價格值不可用 - 例如:如果價格的數據庫單元爲空或具有類似unknown的值,則返回unavailable消息。

所以我就用這個代碼:

function get_rate($foo,$bar) { 

    if ($bar== "something") { 
    //$test= "testing"; 
    } elseif ($foo== 0) { 
    $message = 'Free'; 
    } elseif ($foo> 0) { 
    $message = '$'.$foo; 
    } else { 
    $message = 'Unavailable'; 
    } 

    return $message; 

} 

HTML:

<?= get_rate($price) ?> 

但對於值:

$price="unknown";或者$price是空的,我仍然得到「免費「 信息。

+0

Yu're混合變量。輸入參數是'$ foo'和'$ bar',但是你正在檢查'$ bar'和'$ a'。請修正你的變量。 – Alexander

+0

已經修復,是錯字,謝謝。 – rockyraw

+2

@rockyraw你什麼也沒修正。爲什麼你甚至有2個參數? – Daan

回答

2

現在您有此2種溶液:

解決方案1:

else if ($foo === 0) // use === for checking value and datatype 

解決方案2:

else if ($foo == 0 && $foo != null) // adding != null 

""null視爲0,如果還請使用檢查數據類型這個問題將解決別的使用第二種解決方案。


您的評論後,共享一個基本的例子,你會得到的想法:

$foo = 'bla'; 
var_dump($foo); 

它會在這裏給你string(3) "bla"

+0

好吧,爲什麼像'$ price =「bla」'這樣的文本也被當作0處理? – rockyraw

+0

@rockyraw它感覺像解釋太多,但只是看==和===。說了這麼一句話,我覺得你知道該怎麼辦...... – Naruto

+0

所以不管我做什麼,'$ price =「bla」','$ price ==「bla」','$ price ===「bla」' ,都被視爲'0'? – rockyraw