声明在不应该返回时返回false

时间:2014-12-14 01:51:05

标签: php

以下语句由于某种原因返回false

$coin = isset($_GET['market']) ? $_GET['market'] : 'BTC_USD';
echo $coin;
if($this->model->coins($coin) == false):
    $coin = 'BTC_USD';
else:
    $coin = $_GET['market'];
endif;

型号:

public function coins($coin)
{   
    $coins = array("BTC_USD","BTC_GBP","LTC_USD","LTC_GBP","BTC_LTC","USD_GBP");
    if (!in_array($coin, $coins))
    {
       return false;
    }
}

如果echo$coin语句之前if,它会返回正确的硬币,但在if语句之后它会返回false。我知道这是一个简单的解决方案,它只是完全绕过我。 :(

1 个答案:

答案 0 :(得分:5)

coins()方法永远不会返回true。当它没有返回false时,它会返回undefined,因为没有其他return语句。由于您在来电者undefined == false中进行了宽松的比较。将方法更改为:

public function coins($coin)
{   
    $coins = array("BTC_USD","BTC_GBP","LTC_USD","LTC_GBP","BTC_LTC","USD_GBP");
    return in_array($coin, $coins));
}