2016-05-04 15 views
-2

この質問はおそらく何度も尋ねられていますが、私は解決策を得られません。JSON配列をループしてテーブルに結果を表示する - Laravel 5.2

私はこのようなAPIを呼んでいる:どのようにループ

{#201 ▼ 
    +"Start": 0 
    +"Count": 100 
    +"ResultCount": 100 
    +"Results": array:100 [▼ 
    0 => {#199 ▼ 
     +"Player": {#186 ▼ 
     +"Gamertag": "Ferro2Clutch" 
     +"Xuid": null 
     } 
     +"Rank": 1 
     +"Score": {#195 ▶} 
    } 
    1 => {#188 ▶} 
    2 => {#200 ▶} 
    3 => {#203 ▶} 
    4 => {#206 ▶} 
    5 => {#209 ▶} 
    6 => {#212 ▶} 
....... and so on till 100 

public function getLeaderBoardArray($leaderBoardStats) { 
     $array = []; 
     $ex = $leaderBoardStats; 

     dd($ex); 

     return $array; 
    } 

これは私(DD)は(それをダイダンプ)ときに私が得る結果であり、プレイヤーゲーマータグを表示します。

私は私が今やっているこの:

public function getLeaderBoardArray($leaderBoardStats) { 
     $array = []; 
     $array['Gamertag_1'] = $leaderBoardStats->Results[0]->Player->Gamertag; 
     $array['Csr_1'] = $leaderBoardStats->Results[0]->Score->Csr; 

     $array['Gamertag_2'] = $leaderBoardStats->Results[1]->Player->Gamertag; 
     $array['Csr_2'] = $leaderBoardStats->Results[1]->Score->Csr; 

     // and so on til 10.... 

     return $array; 
    } 

あなたが見ることができるように、これは各リーダーボードのために100まで行うには痛みになります。

それぞれのループに対して何とか簡単な方法がありますか?

答えて

3

あなたは昨日非常によく似た質問をしましたが、今日私はあなたに非常に似たような答えを与えるつもりです。

https://laravel.com/docs/5.2/collections

より消化可能配列に各項目を変換するために、map()コレクション機能を使用してください。

$results = collect($leaderBoardStats->Results); 
$gamers = $results->map(function($item, $key) 
{ 
    return [ 
     'gamertag' => $item->Player->Gamertag, 
     'csr'  => $item->Score->Csr, 
    ] 
}); 

これはあなたのように見えるの配列を与えるだろう...

[ 
    ['gamertag' => "name", 'csr' => 11111], 
    ['gamertag' => "name", 'csr' => 11111], 
    ['gamertag' => "name", 'csr' => 11111], 
    ['gamertag' => "name", 'csr' => 11111], 
]; 

次に、あなたのビューでは、テーブルを構築するために、これを行うことができます。

@foreach ($gamers->all() as $gamer) 
<tr> 
    <td>{{ $gamer['gamertag'] }}</td> 
    <td>{{ $gamer['csr'] }}</td> 
</tr> 
@endforeach 

すべてがかかります。 Laravelコレクションはおそらくフレームワーク全体の中で最も強力な要素の1つであり、信じられないほど堅牢でよく構築されています。配列関連の質問がある場合は、ドキュメンテーションにコレクション関連の回答がある可能性があります。

+0

はい、ありがとうございます、私に見てみましょう – David

+0

はい、私はあなたの方法で動作するようになった。ありがとうございました! – David

1

単純なループを作成して、結果を反復処理することができます。例えば、私はforeachループ

$array = []; 

foreach ($leaderBoardStats->Results as $stat) { 
    array[] = [ 
     'gamer_tag' => $stat->Player->Gamertag, 
     'csr'  => $stat->Score->Csr 
    ]; 
} 

return $array; 

を使って好きな、より良い、より高度なアプローチは、あなたが余分な配列を作成する必要はありませんので、これをマッピングすることであろう。

return array_map(function ($stat) { 
     return [ 
      'gamer_tag' => $stat->Player->Gamertag, 
      'csr' => $stat->Score->Csr 
     ]; 
    }, $leaderBoardStats->Results); 
関連する問題