2014-06-19 7 views
5

Wiem, że jest wiele pytań na ten temat, ale żaden z nich nie zajmuje się tym (o ile mogłem).Zapętlanie tablic zagnieżdżonych w PHP - wyodrębnianie wartości w widoki ostrzy (Laravel)

Mam tablicę PHP (która jest zwracana przez odpowiedź Guzzle'a) w projekcie Laravel.

Tablica PHP

$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" 
    } 
    } 
} 

ja po prostu chcę, aby wyodrębnić „id” i „nazwa” przycisków poniżej, aby korzystać w widoku, ale jestem trochę zakłopotany. Próbowałem poniższych sugestii, ale nie mogę tego dokładnie rozwiązać.

How to Flatten a Multidimensional Array?

PHP foreach with Nested Array?

Szukałem również w array_walk_recursive.

Każda pomoc będzie niesamowita i doceniona! Chcę być w stanie wykorzystać te 2 klucze w laravel tak:

Controller

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

View

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

Odpowiedz

4

Możesz spróbować tego:

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

Lepiej sprawdzić zwrócony re DOPROWADZIĆ w kontrolerze przed wysłaniem go do widoku za pomocą czegoś takiego, więc nie będzie żadnych błędów w widoku:

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

Dzięki! Brakowało części I '$ users [' spirits '] ' – Pete

+0

Zapraszamy :-) –

1

w przypadku użytkownicy są zawsze przechowywane w spirits -klawisz swojej zmiennej $users po prostu mógłby zmodyfikować @foreach -loop następująco:

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

przeciwnym razie można edytować wartość zwracaną od kontrolera. Oznacza to, że po prostu może zmienić linię:

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

do

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

W tym przypadku nie masz dostępu do swojego error klawiszem.