2016-01-20 88 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