2014-06-19 13 views
5

Ich weiß, es gibt viele Fragen zu diesem Thema, aber keine damit zu tun (soweit ich sehen konnte).Looping PHP geschachtelte Arrays - Extrahieren von Werten in Blade Views (Laravel)

Ich habe ein PHP-Array (die FYI, ist über Guzzle Antwort zurückgegeben) in einem Laravel-Projekt.

Der PHP-Array

$users = array(2) { 
    ["error"]=> 
    bool(false) 
    ["spirits"]=> 
    array(2) { 
    [0]=> 
    array(2) { 
     ["id"]=> 
     string(1) "1" 
     ["name"]=> 
     string(5) "Foo" 
    } 
    [1]=> 
    array(2) { 
     ["id"]=> 
     string(1) "2" 
     ["name"]=> 
     string(3) "Bar" 
    } 
    } 
} 

ich einfach mal unter der „id“ und „namen“ Schlüssel zu extrahieren, in einer Ansicht zu verwenden, aber ich bin ein wenig ratlos. Ich habe die folgenden Vorschläge ausprobiert, kann es aber nicht ganz durcharbeiten.

How to Flatten a Multidimensional Array?

PHP foreach with Nested Array?

Ich habe sah auch in array_walk_recursive.

Jede Hilfe wäre fantastisch und geschätzt! Ich möchte in der Lage, wie diese 2 Tasten in Laravel zu verwenden, so:

-Controller

return View::make('users')->with('users',$users); 

Ansicht

@foreach ($users as $key => $user) 
    {{ $user["id"] }} 
    {{ $user["name"] }} 
@endforeach 

Antwort

4

Sie können dies versuchen:

@foreach ($users['spirits'] as $user) 
{{ $user["id"] }} 
{{ $user["name"] }} 
@endforeach 

Es ist besser, das zurückgegebene zu überprüfen sult in Ihrem Controller, bevor Sie es auf die Ansicht mit so etwas wie dies senden, so wird es keine Fehler in der Ansicht sein:

$users = 'Get it from somewhere...'; 
if(!$users['error']) { 
    return View::make('users')->with('users', $users); 
} 
else { 
    // Show an error with a different view 
} 
+1

Danke! Teil I fehlte war '$ Benutzer ['Geister]'' – Pete

+0

Sie sind herzlich willkommen :-) –

1

falls Ihre Benutzer werden immer in der spirits gespeichert -Taste Ihrer $users Variable, die Sie einfach Ihre @foreach -loop wie folgt ändern könnte:

@foreach ($users['spirits'] as $user) 
    {{ $user['id'] }} 
    {{ $user['name'] }} 
@endforeach 

Andernfalls könnten Sie Ihre Rückgabewert von der Steuerung bearbeiten. Das bedeutet, dass man einfach die Zeile ändern könnte:

return View::make('users')->with('users',$users);

zu

return View::make('users')->with('users',$users['spirits']);

In diesem Fall, dass Sie keinen Zugriff auf Ihre error -Taste haben.