这个问题可能已被多次提出,但我无法得到解决方案。
我正在调用这样的API:
public function getLeaderBoardArray($leaderBoardStats) {
$array = [];
$ex = $leaderBoardStats;
dd($ex);
return $array;
}
这是我在(DD)(Die-Dump it)时得到的结果:
{#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
如何循环播放此数组并显示Players Gamertag。
这就是我现在正在做的事情:
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;
}
正如你所看到的,对于每个领导者来说,这将是一件痛苦的事情。
是否有更简单的方法,比如以某种方式为每个循环做一个?
答案 0 :(得分: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 Collections可能是整个框架中最强大的方面之一,并且非常强大且构建良好。如果您有与数组相关的问题,那么文档可能会有与集合相关的答案。
答案 1 :(得分: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);