2017-06-06 3 views
0

私は2つの数値を評価する関数を作成しようとしています。PHPパーセンテージ変更を評価する関数

// $live_data = data pulled from an API - ex: .000121231 or 2500.00 
// $pervious_data = data pulled from a DB - ex: .00or 11111.00 
// $alert_data['value'] = data pulled from a DB - ex: 10 or -10 

function percent_change_eval($data, $alert_data, $previous, $currency){ 
    $live_data = (float)$data[$currency][$alert_data['comparison']]; 
    $previous_data = (float)$previous[$alert_data['comparison']]; 
    $percent = round((($live_data) - ($previous_data))/($previous_data) * 100, 10); 
    switch($alert_data['operator']) {  
    case ">=": 
     if($percent > $alert_data['value']){ 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
     break 1; 
    case "<=": 
     if($percent < $alert_data['value']){ 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
     break 1; 
    } 
} 

私は機能を構築してきましたが、とき、それはいけない何らかの理由でそれがtrueを投げ続けます。私はそれが数字が大きすぎるか小さすぎるか、またはvarsの1つがヌルである場合に何かをすると仮定しています。

アドバイスやヘルプがありますか?

+0

を作るため

if($alert_data['operator'] == '>=') return $percent > $alert_data['value']); if($alert_data['operator'] == '<=') return $percent < $alert_data['value']); 

がきれいに見えるとはるかに少ない場所:
私はちょうど2つのラインを使用して、それを書き換えたいです時間?また、スイッチの代わりに演算子( '<=', '> =')の代わりに文字列を使用してみてください。 – Naga

+0

私は、switch文の直前に$ percent、$ alert_data ['operator']と$ alert_data ['value']の値を記録することを勧めます。 TRUEが入力データによって引き起こされていないことを確認するだけです。 –

答えて

0

回答自体はありませんが、私はswitch件の嫌いです。それは16行のコードを必要としました! `$ alert_dataの[「演算子」]` 1回目と2の値とは何か間違い