我通过api提取实时价格并检查CHANGEPCT24HOUR值。
如果值为负,我想要一个向下箭头,如果它是正数则会给出一个绿色向上箭头。
以下代码无法正常工作。 当前值为BTC:8.32& ETH:-2.86
代码:
$json_string = file_get_contents("https://myapi.com/?fsyms=BTC,ETH,DASH,LTC,NEO,XRP&tsyms=USD");
$parsed_json = json_decode($json_string, true);
$btcp = $parsed_json['DISPLAY']['BTC']['USD']['CHANGEPCT24HOUR'];
$ethp = $parsed_json['DISPLAY']['ETH']['USD']['CHANGEPCT24HOUR'];
if(strpos($btcp,'-') == FALSE){
$btc = "<i class=\"fa fa-fw fa-arrow-up\" style=\"color:green\"></i>".$parsed_json['DISPLAY']['BTC']['USD']['CHANGEPCT24HOUR'];
} else {
$btc = "<i class=\"fa fa-fw fa-arrow-down\" style=\"color:red\"></i>".$parsed_json['DISPLAY']['BTC']['USD']['CHANGEPCT24HOUR'];
}
if(strpos($ethp,'-') == FALSE){
$eth = "<i class=\"fa fa-fw fa-arrow-up\" style=\"color:green\"></i>".$parsed_json['DISPLAY']['ETH']['USD']['CHANGEPCT24HOUR'];
} else {
$eth = "<i class=\"fa fa-fw fa-arrow-down\" style=\"color:red\"></i>".$parsed_json['DISPLAY']['ETH']['USD']['CHANGEPCT24HOUR'];
}
$livechange = "BTC : ".$btc.'<br />';
$livechange .= "ETH : ".$eth;
echo $livechange;
它显示了两者的向上箭头。但是,如果我将$eth strpos
检查更改为此
if(strpos($ethp,'-') == FALSE)
然后切换顺序或它周围的$eth
工作正常。
我不知道为什么原始的strpos方法在第二次检查时无法正常工作。
答案 0 :(得分:1)
您需要使用===
而不是==
,因为如果您查找的字符位于字符串的第一个位置,strpos
将返回0。
所以在-50
:
strpos('-50', '-') == 0 == FALSE // This is true
strpos('-50', '-') === FALSE // This is false