Multidimensionale Arrays und überschneidende Keys

joobie

Mitglied
Ich habe wieder mal so einen Zungenbrecher - im übertragenen Sinne. Ich arbeite bereits so lange an diesem Ding, dass mir das Augenscheinliche bestimmt entgeht. Willkommen, Wald und Bäume. Hier ist das Problem:

Ich habe zwei multidimensionale Arrays, erstellt aus einer Datenbank. Beide haben einen gemeinsamen Nenner. Ich muss nun diese zwei Arrays vor dem Output auf der Website abgleichen und für Übereinstimmungen eine CSS-Klasse hinzufügen.

Also:

1) wir haben das Array "Blumen".
Code:
$blumen = array(
     0 => array(
          'ID' => 22
          ...
     ),
     1 => array(
          'ID' => 33,
          ...
     )
);

2) wir haben auch das Array "Länder".
Code:
$land = array(
     0 => array(
          'ID' => 0,
          'blumen' => 33,
          ...
     ),
     1 => array(
          'ID' => 1,
          'blumen' => 22,
          ...
     )
);

Was ich nun brauche ist eine Methode, um alle Blumen auszuspucken, aber mit einer angehängten Info bzgl. des Landes.

Zum Beispiel:
Code:
foreach($blumen as $blume) {
     ...
     if($in_array($blume['ID']), $land))
          $output .= ' class="exists"';
     ...
}

Ich hoffe das macht Sinn. Das Problem ist dass ich nicht einfach in_array benutzen kann, da meherere Felder in der DB den gleichen Integer haben können. Ich haben rauf und runter gesucht aber leider nichts finden können, um das zu lösen.

Ich haben auch versucht, mit extrem verschachtelten foreach()-Schleifen zu arbeiten, aber das hat zum Einen nicht funktioniert und zum Anderen macht eine "foreach(foreach())"-Struktur nicht viel Sinn, da es ziemlich viel an Ressourcen verbrauchen würde.

Falls ich mich nicht verständlich genug gemacht habe, bitte sagen und ich werde versuchen es deutlicher zu formulieren :)

Danke.
 
Zuletzt bearbeitet:
Hi!

Und so?

PHP:
$i = 0;
foreach($blumen as $blume)
{

   foreach($laender as $land)
  {
        if($blume["ID"] == $land["blume"]
        {
                // Neues array erstellen
                $newdata[$i] = $blume;
                $newdata[$i]["land"] = $land["ID"];

               // Oder css ausgeben
               //....
        }  
  }
  $i++;

}

Ich konnte es nicht testen, aber ich denke so könnte es ungefähr aussehen.

Grüße,
Jacka
 
Zuletzt bearbeitet:
Zurück