• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

foreach Schleife für ALLE Arrays

Witschi262

Blogger
Hallo,
ich habe ein Isometrisches Gitter mit PHP generiert. Die einzelnen Zeilen habe ich in einem Array gespeichert. In jedem Array ist eine Zahlenreihe definiert (1= Fließe, 0= nichts). Mit explode zerlege ich die Zeichenkette um dann entsprechendes Fließenmuster auszugeben.

PHP:
$grid = array();$grid[1] = "1,1,1,1,1,1,1"; $grid[2] = "1,1,1,1,1,1,1";$grid[3] = "1,1,1,1,1,1,1"; $grid[4] = "1,1,1,1,1,1,1";$grid[5] = "1,1,1,1,1,1,1"; $grid[6] = "1,1,1,1,1,1,1";$grid[7] = "1,1,1,1,1,1,1"; $grid[8] = "1,1,1,1,1,1,1";
$tile = explode(",",$grid[1]);foreach ($tile as $row1) {if($row1 == "1")  {  echo '<img src="images/tile.png" />';  }
if($row1 == "0")  {  echo '<img src="images/tile2.png" />';  }}

Jetzt muss ich aber für jeden Array -Wert eine Schleife erstellen. Also $grid[1], $grid[2] usw.
Wie kann ich das alles in eine Schleife packen?

Wichtig ist, dass jede zweite Reihe Fließen, also jeder gerade Array Wert, nach rechts verschoben werden muss damit die Fließen ineinader Haken. (http://arcolz.net/res/misc/isographthumb.gif)

Wie mache ich das?
 
Werbung:
Werbung:
Ich weiß zwar nicht, ob es wirklich Sinn macht, ein Array mit 8 Dimensionen und identischen Werten zu erstellen, aber du hast ein mehrdimensionales Array:

PHP:
$foo = array(
    array(1,2,3,4),
    array(5,6,7,8),
    .......
)

und wenn du das in einer foreach-Schleife ausgeben willst, dann muss diese ebenso aufgebaut sein:
PHP:
foreach ($foo as $index => $value) {
    echo $value;
        foreach ($value as $bar) {
            echo $bar;
        }
        .............
}
 
Der Array Inhalt wird später noch verschieden. Da die 1 nur sagt "Fließe" und die 0 "keine fließe". So möchte ich ein dynamisches Grid aufbauen.
 
Werbung:
Vielen Dank für die Hilfe. Allerdings möchte ich ja noch nach jedem "array-wert" (also $grid[1] $grid[2]) Einen Zeilenumbruch und dann diese Zahlen weiterverarbeiten. 1 steht für Bild A und 2 für Bild B.

Hinzu kommt noch, dass jede zweite Reihe versetzt werden muss.
 
Wenn Du Zeilenumbrüche willst, dann füg sie in die Ausgabe innerhalb der Schleife(n) an der entsprechenden Stelle ein. Das gilt auch für jeglichen anderen HTML-Code den Du zur Unterstützung benötigst.
 
Werbung:
Suchst du sowas:
PHP:
<?php

   function printArray($data)
   {
      if (is_array($data))
      {
         foreach ($data as $value)
         {
            if (is_array($value))
              printArray($value);
            else
              echo "$value<br />\n";
         }
      }
   }
   
   $array = array('1', array('a', 'b', 'c'), '2', array('d', 'e', 'f'), '3', '4');
   
   printArray($array);
?>
 
Ich dachte Du suchst nach der Möglichkeit diese Arrays mit foreach auszugeben? Das wurde dir oben beschrieben. Mit explode() getrennt geht das natürlich nur bedingt.
 
ausgeben kann ich sie ja. Mein Problem ist nur, dass es nicht dynamisch funktioniert. Ich möchte beliebig viele
Werte in einem Array abspeichern. Von z.B $grid[1] bis $grid[454].

Jede "Wertezeile" im Array entspricht einem Fließenmuster. Um einen ganzen Boden zu generieren benötige ich aber mehrere Fließenmuster untereinander.

Beispiel: $grid[1] = "1,1,0,0";

Dann ist die erste Zeile des Fließenmusters: Fließe, Fließe, Nichts, Nichts
So möchte ich die Reihen aufbauen. Dabei möchte ich allerdings beliebig viele Reihen dazu legen.

Hinzu kommt, dass jede zweite Reihe nach rechts verschoben werden muss, damit die einzelnen Fließen (wie im Bild) ineinader greifen.
 
Werbung:
Zurück
Oben