Laravel | Two arrays in foreach

I have two different arrays and I want to create a table with these two arrays.

But I don’t know how to realize this in just one foreach loop with Laravel Blade.

The first array is from a external api and the second array was a Laravel Collection I converted to an array with – toArray()

As you can see both arrays have 10 elements and in my table I want to have each row with columns from both arrays.

array:10 [▼
  0 => {#193 ▼
    +"instanceID": "Ex1"
    +"alias": null
    +"displayName": "Ex1"
    +"instanceHost": "exserver"
    +"startMode": "automatic"
    +"processID": 2960
    +"status": "running"
    +"startStopError": null
  }
  1 => {#194 ▶}
  2 => {#195 ▶}
  3 => {#196 ▶}
  4 => {#197 ▶}
  5 => {#198 ▶}
  6 => {#199 ▶}
  7 => {#200 ▶}
  8 => {#201 ▶}
  9 => {#202 ▶}
]

array:10 [▼
  0 => array:8 [▼
    "id" => 1
    "name" => "Example"
    "street" => "Exstreet 1"
    "postalcode" => 1234
    "city" => "Town"
    "created_at" => "2015-11-05 16:18:02"
    "updated_at" => "2015-11-05 16:53:58"
    "status" => "Silver"
  ]
  1 => array:8 [▶]
  2 => array:8 [▶]
  3 => array:8 [▶]
  4 => array:8 [▶]
  5 => array:8 [▶]
  6 => array:8 [▶]
  7 => array:8 [▶]
  8 => array:8 [▶]
  9 => array:8 [▶]
]

Can you help me?

Greets
Wipsly

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Hows about this? array_merge will get it done, but this will show you another option that should be fairly easy to understand.

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Street</th>
            <th>Zip</th>
            <th>City</th>
            <th>Created At</th>
            <th>Updated At</th>
            <th>Status</th>
            <th>Instance ID</th>
            <th>Alias</th>
            <th>Display Name</th>
            <th>Instance Host</th>
            <th>Start Mode</th>
            <th>Process ID</th>
            <th>Status</th>
            <th>Start Stop Error</th>
        </tr>
    </thead>
    <tbody>
        @foreach($secondArray as $key => $row)
            <tr>
                <th>{{ $row['id'] }}</th>
                <th>{{ $row['name'] }}</th>
                <th>{{ $row['street'] }}</th>
                <th>{{ $row['postalcode'] }}</th>
                <th>{{ $row['city'] }}</th>
                <th>{{ $row['created_at'] }}</th>
                <th>{{ $row['updated_at'] }}</th>
                <th>{{ $row['status'] }}</th>
                <th>{{ $firstArray[$key]->instanceId }}</th>
                <th>{{ $firstArray[$key]->alias }}</th>
                <th>{{ $firstArray[$key]->displayName }}</th>
                <th>{{ $firstArray[$key]->instanceHost }}</th>
                <th>{{ $firstArray[$key]->startMode }}</th>
                <th>{{ $firstArray[$key]->processID }}</th>
                <th>{{ $firstArray[$key]->status }}</th>
                <th>{{ $firstArray[$key]->startStopError }}</th>
            </tr>
        @endforeach
    </tbody>
</table>

EDIT: Though, personally, I really like this MultipleIterator option.

Method 2

The simplest way is to merge the arrays in one array and loop as one array, for example:

@foreach(array_merge($externalApi, $myArray) as $item)
    // ...
@endforeach

Hope there are no duplicate fields in arrays.

Method 3

You can use SPL’s MultipleIterator for this:

$mi = new MultipleIterator();
$mi->attachIterator(new ArrayIterator($array1));
$mi->attachIterator(new ArrayIterator($array2));
foreach($mi as list($array1data, $array2data)) {
    var_dump($array1data,$array2data);
}


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x