PHP strpos 没有正确检查多个项目

PHP strpos not checking multiple items correctly

我正在通过 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方法无法正常进行第二次检查。

您需要使用 === 而不是 ==,因为如果您查找的字符位于字符串的第一个位置,strpos 将 return 0。

所以在 -50 中:

strpos('-50', '-') == 0 == FALSE // This is true

strpos('-50', '-') === FALSE // This is false