2017-12-06 3 views
2

api를 통해 실시간 가격을 받고 CHANGEPCT24HOUR 값을 확인하고 있습니다.PHP가 여러 항목을 올바르게 검사하지 않습니다.

값이 음수라면 아래쪽 화살표를 원한다면 양수이면 녹색 위쪽 화살표가됩니다.

아래 코드는 제대로 작동하지 않습니다. 8.32 & ETH : 현재 값은 BTC 있습니다 -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

사용 === (트리플 같음). strpos가 0을 반환하면 0은 == false입니다. 그래서 더 잘 ===. –

+0

strpos가 스타터를 검사 할 때 엄격한 타입 ('===')을 사용하십시오. – Andrew

+0

설명서의 경고를 확인하십시오. 물론 – jeroen

답변

1

== 대신 ===을 사용해야합니다. strpos은 찾은 문자가 문자열의 첫 번째 위치에 있으면 0을 반환하므로 0을 반환합니다. -50에 따라서

:

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

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

+1

.. 내가 다시 이것을 잊어 버렸다고 믿을 수 없습니다. 의견을 주신 모든 분들께 감사 드리며 최대한 빨리 답변을 드리겠습니다. –

관련 문제