2016-04-29 7 views
0

私はHalo 5 APIを使用していますが、私は検索ボックスにゲーマータグを入力するとユーザーの統計情報を表示するので、など、ユーザーが、私はこのエラーメッセージを取得存在しない場合、そのKDは(、/死亡率を殺しても:Number(KD)が0の場合リダイレクトback - laravel 5.2

課ゼロ

によるので、私は、ユーザーを計算しています。この行のを。 KD:

protected function getPlayerArray($playerStats) { 

     $array = []; 

     $array['TotalKills'] = $playerStats->Results[0]->Result->ArenaStats->TotalKills; 
     $array['TotalDeaths'] = $playerStats->Results[0]->Result->ArenaStats->TotalDeaths; 


     // RIGHT HERE 
     $array['Kd'] = $array['TotalKills']/$array['TotalDeaths']; 

     // If no gamertag found it will divide 0/0 = 0, then it throws error message 

     return $array; 
    } 

このエラーを回避する方法はありますか?

(私はゲーマータグは、Xbox Liveの上に存在するかどうかを確認する方法を知らないので、私はそれをこのようにしなければならない)

+0

をリダイレクト私はそれは、あなたがここにサブスクリプションキーのいくつかの並べ替えを掲載思わ – David

+0

の上ご確認くださいあなたはすぐにそれを削除する必要があり、他の方法にKDロジックを挿入することによって、作業ました〜にb私の秘密.. – Linek

+0

ya、ありがとうございました – David

答えて

1

私たちはゲーマータグが存在するかどうかをチェックするためにTotalDeathsを使用することができると仮定します。この場合、単純なif文を使用します。

if ($array['TotalDeaths'] === 0) { 
    // Gamer tag doesn't exists 
    return false; // method that calls this method should check for false and redirect 
} 

$array['Kd'] = $array['TotalKills']/$array['TotalDeaths']; 

===が文字列00.0と一致しないことに注意してください。可能なすべてのゼロ値に確実に一致させたい場合は、==を使用できます。

ゲーマータグが存在するかどうかを確認するのはむしろ貧弱です。この関数を呼び出す前にチェックすることをお勧めします。存在するゲーマータグも考慮して、合計死亡数は0である必要があります。

1

プレーヤーが実際に死亡者を0人にした場合はどうなりますか?私はおそらく(新しいプレーヤーにとってはそうではないかもしれませんが)技術的に可能で、あなたのコードはそれを処理できるはずです。私があなただったらあなたがしようとする前に

私はあなたのデータの妥当性検査を行うだろうと数学:

if ($array['TotalDeaths'] == 0) { 
    $array['Kd'] = 0; // Or something that represents "infinity" but that doesn't make sense in this context 
} else { 
    $array['Kd'] = $array['TotalKills']/$array['TotalDeaths']; 
} 
0

それは他の方法にKDロジックを分離することによって、作業およびSpartanランクがある場合は、その後だけに=チェックガットそれははずの場合は0、そうならば、バック

class ImageController extends Controller { 


    public function generate(Request $request) { 


     // Validate email and password. 
     $this->validate($request, [ 
      'gamertag' => 'required|min:3', 
     ]); 

     $gamertag = Input::get('gamertag'); 


     // Get data from API 
     $playerStats = $this->getPlayerStats($gamertag); 
     $playerArray = $this->getPlayerArray($playerStats);   // This is the array to be used when creating the image. 



     $spartanRank = json_decode($playerArray['SpartanRank'], true); 

     if ($spartanRank === 0) { 
      return redirect()->back(); 
     } 

     $playerKillDeath = $this->playerKD($playerStats); 

     $XP = json_decode($playerArray['Xp'], true); 
     $TotalKills = json_decode($playerArray['TotalKills'], true); 
     $TotalHeadshots = json_decode($playerArray['TotalHeadshots'], true); 
     $TotalShotsFired = json_decode($playerArray['TotalShotsFired'], true); 
     $TotalDeaths = json_decode($playerArray['TotalDeaths'], true); 
     $Kd = json_decode($playerKillDeath['Kd'], true); 
     $GamesWon = json_decode($playerArray['GamesWon'], true); 

     return view('stats') 
      ->with('gamertag', $gamertag) 
      ->with('spartanRank', $spartanRank) 
      ->with('XP', $XP) 
      ->with('TotalKills', $TotalKills) 
      ->with('TotalShotsFired', $TotalShotsFired) 
      ->with('TotalHeadshots', $TotalHeadshots) 
      ->with('TotalDeaths', $TotalDeaths) 
      ->with('Kd', $Kd) 
      ->with('GamesWon', $GamesWon) 
      ->with('playerSpartanImage', $playerSpartanImage); 

    } 




    protected function getPlayerStats($gamertag) { 

     $client = new GuzzleHttp\Client(); 

     $baseURL = 'https://www.haloapi.com/stats/h5/servicerecords/arena?players=' . $gamertag; 

     $res = $client->request('GET', $baseURL, [ 
      'headers' => [ 
       'Ocp-Apim-Subscription-Key' => '' 
      ] 
     ]); 


     if ($res->getStatusCode() == 200) { 
      return $result = json_decode($res->getBody()); 
     } elseif ($res->getStatusCode() == 404) { 
      return $result = redirect()->route('/'); 
     } 


    } 



    protected function getPlayerArray($playerStats) { 

     $array = []; 
     $array['SpartanRank'] = $playerStats->Results[0]->Result->SpartanRank; 
     $array['Xp'] =   $playerStats->Results[0]->Result->Xp; 
     $array['TotalKills'] = $playerStats->Results[0]->Result->ArenaStats->TotalKills; 
     $array['TotalHeadshots'] = $playerStats->Results[0]->Result->ArenaStats->TotalHeadshots; 
     $array['TotalShotsFired'] = $playerStats->Results[0]->Result->ArenaStats->TotalShotsFired; 
     $array['TotalDeaths'] = $playerStats->Results[0]->Result->ArenaStats->TotalDeaths; 
     // $array['Kd'] = $array['TotalKills']/$array['TotalDeaths']; 
     $array['GamesWon'] = $playerStats->Results[0]->Result->ArenaStats->TotalGamesWon; 

     return $array; 
    } 


    protected function playerKD($playerStats) { 
     $arrayKD = []; 

     $arrayKD['TotalKills'] = $playerStats->Results[0]->Result->ArenaStats->TotalKills; 
     $arrayKD['TotalDeaths'] = $playerStats->Results[0]->Result->ArenaStats->TotalDeaths; 
     $arrayKD['Kd'] = $arrayKD['TotalKills']/$arrayKD['TotalDeaths']; 

     return $arrayKD; 
    } 


}