2016-09-18 6 views
-3

Ich brauche eine Liste mit jedem dieser Elemente zu machen, druckt Länder in Ordnung, aber der zweite foreach druckt nichts, was ich nicht verstehenZweite Nested Foreach druckt nichts

$countries = array('abc','def','ghi'); 
    foreach ($countries as $key) { 
     echo "<ul> ".$key; 
       $character = characters::where('country',$key); 
       foreach ($personaje as $p) { 
        echo $ch->name ; 
       } 
     echo "</ul>"; 
    } 

es sollte so etwas sein, und ich bin 100% sicher sein, dass die Namen der Tabelle und der $ key Spiel, ich habe es mit Handwerker Kesselflicker

  • abc {
    -x
    -y
    }
  • def {
    -z
    }
  • ghi {
    }
+0

Sie sind Zeichen hier 'Zeichen $ = Zeichen zu lesen :: wo ('Land', $ key);' und in der 'foreach' Schleife unten, Sie sind mit '$ personaje'. Woher kommt das? – linuxartisan

+1

Wie @linuxartisan bemerkt, kommt '$ personaje' aus dem Nichts. Außerdem müssen Sie Abfragen ausführen, nachdem Sie sie erstellt haben. benutze '$ character = characters :: wo ('country', $ key) -> get();' – Qevo

+0

ja tut mir leid, weil ich $ personaje nicht zu $ ​​character übersetzt habe, dass ein rip off. immer noch war das nicht das problem, weil es die erste foreach druckt, aber die zweite wird ignoriert, ich weiß nicht warum. es druckt nichts –

Antwort

0

Es gibt eine Reihe von Problemen mit diesem Code-Abschnitt, bezogen auf das Snippet Sie zur Verfügung gestellt:

 $character = characters::where('country',$key); 
     foreach ($personaje as $p) { 
      echo $ch->name ; 
  1. Es sieht aus wie Sie versuchen eine Abfrage auszuführen, um die $ -Zeichenvariable zu erhalten, aber Sie führen sie nicht aus. Fügen Sie ein "get" zum Ende der Anweisung hinzu:

    $ character = Zeichen :: wo ('Land', $ Schlüssel) -> get();

  2. Ihre zweite foreach-Schleife verwendet eine Variable $ personaje, die noch nicht definiert worden ist, zumindest in dem Code, den Sie zur Verfügung gestellt. Sollte $ Zeichen stattdessen sein?

  3. Ihre foreach-Schleife verwendet "$ personaje wie $ p", aber Sie verwenden nie die Variable $ p in der Schleife. Stattdessen echo Sie $ ch-> Name. Die Variable $ ch ist in dem von Ihnen bereitgestellten Code nicht vorhanden.

+0

Ja, weil ich vergessen habe zu verwenden -> get(); –

1

Versuchen Sie folgendes:

$countries = array('abc','def','ghi'); 
foreach ($countries as $key) { 
    echo "<ul> ".$key; 
      $character = characters::where('country',$key)->get(); 
      foreach ($character as $ch) { 
       echo $ch->name ; 
      } 
    echo "</ul>"; 
}