douxie1894
2019-07-16 16:34
浏览 187
已采纳

如何在一个中运行两个foreach循环(laravel)

Hi my code is including two array which I want echo them with foreach() loop in table but there is problem that php won’t let me run two array in one loop

like this:

@foreach ($playerinfo1 as $info1 && $playerinfo2 as $info2)
            <tr>
                        <td>{{$info1->id}}</td>
                        <td>{{$info1->authid}}</td>
                        <td>{{$info1->nick}}</td>
                        <td>{{$info1->date}}</td>
                        <td>{{$info1->uses}}</td>
                        <td>{{$info2->rounds}}</td>
                        <td>{{$info2->time}}</td>
                        <td>{{$info2->connects}}</td>
                        <td><a href="http://ip-api.com/#{{$info1->ip}}"> 
{{$info1->ip}}</a></td>
                   </tr>
        @endforeach

I tried these codes but they have problem and they echo the value more than once:

        @foreach ($playerinfo1 as $info1)
        <tr>
                    <td>{{$info1->id}}</td>
                    <td>{{$info1->authid}}</td>
                    <td>{{$info1->nick}}</td>enter code here
                    <td>{{$info1->date}}</td>
                    <td>{{$info1->uses}}</td>
                    <td><a href="http://ip-api.com/#{{$info1->ip}}">

{{$info1->ip}}</a></td>
                @foreach ($playerinfo2 as $info2)
                        <td>{{$info2->rounds}}</td>
                        <td>{{$info2->time}}</td>
                        <td>{{$info2->connects}}</td>
             </tr>
            @endforeach
    @endforeach

    @foreach ($playerinfo1 as $info1)
        <tr>
                    <td>{{$info1->id}}</td>
                    <td>{{$info1->authid}}</td>
                    <td>{{$info1->nick}}</td>
                    <td>{{$info1->date}}</td>
                    <td>{{$info1->uses}}</td>
                    <td><a href="http://ip-api.com/#{{$info1->ip}}">{{$info1->ip}}</a></td>
            @foreach ($playerinfo2 as $info2)
                    <td>{{$info2->rounds}}</td>
                    <td>{{$info2->time}}</td>
                    <td>{{$info2->connects}}</td>
         </tr>
        @endforeach
    @endforeach

    @foreach ($playerinfo1 as $info1)
        <tr>
                    <td>{{$info1->id}}</td>
                    <td>{{$info1->authid}}</td>
                    <td>{{$info1->nick}}</td>
                    <td>{{$info1->date}}</td>
                    <td>{{$info1->uses}}</td>
                    <td><a href="http://ip-api.com/#{{$info1->ip}}">{{$info1->ip}}</a></td>
            @endforeach
            @foreach ($playerinfo2 as $info2)
                    <td>{{$info2->rounds}}</td>
                    <td>{{$info2->time}}</td>
                    <td>{{$info2->connects}}</td>
         </tr>
        @endforeach

Also I used array_combine() in order to combining two array but because of differences between key and value ,it doesn't work

$playerinfo1(array):

array:15 [▼
  0 => {#213 ▼
    +"id": 1
    +"authid": "STEAM_0:0:546411185"
    +"nick": "BesTKiLLeR"
    +"date": "2019-05-24 21:22:25"
    +"uses": 62
    +"ip": "188.211.128.180"
  }
  1 => {#215 ▼
    +"id": 2
    +"authid": "STEAM_0:0:21578434"
    +"nick": "ArTTam"
    +"date": "2019-05-23 22:29:43"
    +"uses": 21
    +"ip": "86.55.174.70"
  }
  2 => {#216 ▶}
  3 => {#217 ▶}
  9 => {#223 ▶}
  10 => {#224 ▶}
  11 => {#225 ▶}
  12 => {#226 ▶}
  26 => {#240 ▶}
  32 => {#246 ▶}
  34 => {#248 ▶}
  35 => {#249 ▶}
  38 => {#252 ▶}
  39 => {#253 ▶}
  45 => {#259 ▶}
]

$playerinfo2(array):

array:16 [▼
  0 => {#264 ▼
    +"id": 1
    +"connects": 65
    +"rounds": 305
    +"time": 38579
  }
  1 => {#265 ▼
    +"id": 2
    +"connects": 37
    +"rounds": 124
    +"time": 17257
  }
  2 => {#266 ▶}
  3 => {#267 ▶}
  4 => {#268 ▶}
  5 => {#269 ▶}
  6 => {#270 ▶}
  7 => {#271 ▶}
  8 => {#272 ▶}
  9 => {#273 ▶}
  10 => {#274 ▶}
  11 => {#275 ▶}
  12 => {#276 ▶}
  13 => {#277 ▶}
  14 => {#278 ▶}
  15 => {#279 ▶}
]

I’m afraid if I could not make my point but I hope you will understand what am I mean by looking this codeenter code here

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dsa2c2255888 2019-07-16 18:13
    已采纳

    You are using Laravel and your data is coming from two tables. Why not use an eloquent relationship? It would be so much easier.

    @foreach ($players as $player)
        <tr>
    
            <td>{{$player->id}}</td>
            <td>{{$player->authid}}</td>
            <td>{{$player->nick}}</td>enter code here
            <td>{{$player->date}}</td>
            <td>{{$player->uses}}</td>
            <td><a href="http://ip-api.com/#{{$player->ip}}">{{$player->ip}}</a></td>
    
            <!-- Use a relationship (e.g., stats) to get additional data -->
            <td>{{$player->stats->rounds}}</td>
            <td>{{$player->stats->time}}</td>
            <td>{{$player->stats->connects}}</td>
    
        </tr>
    @endforeach
    
    打赏 评论
  • dt97868 2019-07-16 17:53

    You can use array_merge($arr1,$arr2) in your controller to combine two arrays

    打赏 评论

相关推荐 更多相似问题