2017-07-10 1 views
1

Also, ich habe dieses Array von Arrays, etwa wie folgt:Kann nicht Array Anzeigewerte

protected static $base = [ 
     [ 
      'id' => 4, 
      'createdAt' => 1498638933, 
      'title' => 'Example 1', 
      'tables' => [ 
       ['title' => '#1', 'createdAt' => 1498638940], 
       ['title' => '#2', 'createdAt' => 1498638941], 
       ['title' => '#3', 'createdAt' => 1498638943], 
      ], 
     ], 
     [ 
      'id' => 7, 
      'createdAt' => 1498643923, 
      'title' => 'Example 2', 
      'tables' => [ 
       ['title' => '#1', 'createdAt' => 1498643925], 
       ['title' => '#2', 'createdAt' => 1498643929], 
       ['title' => '#3', 'createdAt' => 1498643932], 
      ], 

diese Arrays in einem Modell-Code sind, und ich möchte, dass sie in meine Seite angezeigt werden soll. Auch aus dem Modell:

public static function getAll() { 
    sleep(1); 
    return self::$base; 
} 

Von web.php (Routen), ich habe:

Route::get('/', function() { 
    $items = \App\MyModel::getAll(); 
    return view('welcome')->with('items', $items); 
}); 

Nun, wenn ich versuche:

 {!! dd($items) !!} 

Alle Arrays angezeigt werden aber nicht schön. Ich will nur ihren Inhalt. So folgte ich diese Schritte (https://laracasts.com/discuss/channels/general-discussion/passing-arrays-to-blade-and-iterating), die wurde:

@foreach($items['title'] as $title => $content) 
    {{ $title }} 
    @foreach ($content as $tables => $item) 
     {{ $tables . ' => ' . $item }} 
    @endforeach 
@endforeach 

Aber ‚title‘ nicht erkannt wird, und ich habe einige Dinge wie diese versucht, nichts funktioniert. Was ich vielleicht vermisse?

+0

Shouldnt es @foreach ($ items as $ item) sein {{$ item [ 'title']}} @ endforeach –

+0

Es funktionierte für die erste Schleife ... was ist mit den Arrays innerhalb dieses Arrays? –

+0

Einfach aktualisieren, um auch diejenigen innerhalb der ersten Schleife einzuschließen - @foreach ($ item ['tables'] als $ table) {{$ table ['title']}} @endforeach –

Antwort

1

Sie versuchen, einen Array-Schlüssel in einem Array von Arrays zu durchlaufen, was nicht möglich ist.

Sie müssen zuerst eine Schleife durch die äußeren Anordnungen und dann können Sie den Inhalt der Schlüssel im Inneren eines solchen Zugriff wie folgt:

@foreach($items as $item) 
    {{ $item['title'] }} 
    @foreach($item['tables'] as $table) 
     {{ $table['title'] }} 
    @endforeach 
@endforeach 
1

Vor allem, wenn Sie Variablen mit Blick zurückkehren, können Sie besser Verwenden Sie die kompakte Funktion von PHP, damit Sie sich nicht wiederholen. Hier ist ein Beispiel:

return view('welcome', compact('items')); 

Und da Sie dd() verwenden, wird alles im Array Dump und dann stirbt. Wenn Sie alle Einzelteile zeigen Ihnen in der Tat eine foreach-Schleife verwenden sollte, aber wie folgt aus:

@foreach($items as $item) 
    {{ $item['title'] }} 
    @foreach($item['tables'] as $table) 
     {{ $table['title'] }} 
    @endforeach 
@endforeach