2017-12-06 1 views
2

Ich ziehe Live-Preise über eine API ein und überprüfe den CHANGECT24HOUR-Wert.PHP strpos prüft mehrere Artikel nicht korrekt

Wenn Wert negativ ist, möchte ich einen Pfeil nach unten, wenn es positiv ist, würde einen grünen Pfeil nach oben geben.

Der folgende Code funktioniert nicht richtig. Die aktuellen Werte sind BTC: 8,32 & ETH: -2,86

Code:

 $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; 

Es ist ein Pfeil nach oben für beide zeigen. Aber wenn ich die $eth strpos zu diesem if(strpos($ethp,'-') == FALSE) ändern und dann die Bestellung wechseln oder die um es funktioniert gut.

Ich weiß nicht, warum die ursprüngliche strpos-Methode für die zweite Überprüfung nicht ordnungsgemäß funktioniert.

+0

Verwendung === (triple equals). Wenn strpos 0 zurückgibt, dann ist 0 == false. Also benutze besser ===. –

+0

Verwenden Sie den strikten Typ ('==='), wenn 'stros' nach Startern sucht. – Andrew

+0

Überprüfen Sie die Warnung in der Anleitung ... – jeroen

Antwort

1

Sie müssen === anstelle von == verwenden, da strpos 0 zurückgibt, wenn das gesuchte Zeichen an der ersten Position der Zeichenfolge steht.

So in -50:

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

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

+1

natürlich .. kann nicht glauben, dass ich das wieder vergessen .. Vielen Dank für Kommentare und ich werde diese Antwort akzeptieren, sobald es mich lässt –