Pages

02 December, 2020

Multidimensional Array in Laravel Blade

 This is Array Data Showing


<?php 

array:2 [▼
  "chest" => array:2 [▼
    "Chest Press" => array:1 [▼
      0 => "1"
    ]
    "Flys" => array:2 [▼
      0 => "3"
      1 => "4"
    ]
  ]
  "hints" => array:2 [▼
    "Chest Press" => array:1 [▼
      0 => "test1"
    ]
    "Flys" => array:1 [▼
      0 => "test2"
    ]
  ]
]

12

Answer : ==>
Get the Data by Multidimensional Array

<table class="table table-striped table-hover table-reflow">
            <thead>
                <tr>
                  <th>Exercises</th>
                  <th>Days</th>
                  <th>Hints</th>


                </tr>
            </thead>
        <tbody>

        @foreach($chests['chest'] as $chest => $exc)
            <tr>
                <td>{{$chest}}</td>
                @foreach($exc as $key => $value)
                    <td>
                         <strong>{{$value}},</strong>
                    </td>
                @endforeach

        @endforeach

        @foreach($chests['hints'] as $hint => $hin)


                @foreach($hin as $key => $value)
                    <td>
                         <strong>{{$value}}</strong>
                    </td>

                @endforeach

              </tr>
        @endforeach

</tbody>

12

@foreach ($daysArray as $day)
    <td >{{  $day }}</td>
@endforeach 

It would probably be best to comma separate the days.
<td>{{ implode(', '$daysArray) }}</td>


Then each row will only have 3 columns (not breaking the table), with the days column being comma separated days.

Edit: If it's possible for an exercise to have more than one "hint", you'd need to do the same there. Instead of

@endforeach
    <td>{{ $chests['hints'][$exerciseName][0]) }}</td>
</tr>
@endforeach

it would just be

<td>{{ implode(', '$chests['hints'][$exerciseName]) }}</td>

The way you have it now is completely breaking your table in both places (view the html source and check, you'll have mismatched td's and tr's), whereas mine doesn't. So, for the whole thing...

<tbody>
    @foreach ($chests['chest'] as $exerciseName => $daysArray)
        <tr>
            <td>{{ $exerciseName }}</td>
            <td>{{ implode(', '$daysArray) }}</td>
            <td>{{ implode(', '$chests['hints'][$exerciseName]) }}</td>
        </tr>
    @endforeach
</tbody>


<tbody>
    @foreach ($chests['chest'] as $exerciseName => $daysArray)
        <tr>
            <td>{{ $exerciseName }}</td>
            <td>{{ array_sum($daysArray) }}</td>
            <td>{{ $chests['hints'][$exerciseName][0] }}</td>
        </tr>
    @endforeach
</tbody>
produces

Chest Press | 1 | test1
Flys        | 7 | test2






array:10 [▼
  "current_page" => 1
  "data" => array:15 [▼
    0 => array:11 [▼
      "id" => 1
      "category" => "mobile"
      "category_name" => "Mobile, Tablets & Accessories"
      "sub_category" => "mobiles"
      "sub_category_name" => "Mobile Phones"
      "child_category" => null
      "child_category_name" => null
      "child_property" => null
      "can_compare" => 1
      "created_at" => "2017-07-14 13:18:06"
      "updated_at" => "2017-07-14 13:18:06"
    ]
    1 => array:11 [▶]
    2 => array:11 [▶]
    3 => array:11 [▶]
    4 => array:11 [▶]
    5 => array:11 [▶]
    6 => array:11 [▶]
    7 => array:11 [▶]
    8 => array:11 [▶]
    9 => array:11 [▶]
    10 => array:11 [▶]
    11 => array:11 [▶]
    12 => array:11 [▶]
    13 => array:11 [▶]
    14 => array:11 [▶]
  ]
  "from" => 1
  "last_page" => 38
  "next_page_url" => "https://price-api.datayuge.com/api/v1/compare/list/categories?page=2"
  "path" => "https://price-api.datayuge.com/api/v1/compare/list/categories"
  "per_page" => 15
  "prev_page_url" => null
  "to" => 15
  "total" => 567
]
789

No comments:

Post a Comment

Thanks