以下语句由于某种原因返回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
。我知道这是一个简单的解决方案,它只是完全绕过我。 :(
答案 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));
}