# "foreach" schleife für mehrere Arrays!?



## Grunge (6. September 2005)

Hi

ich habe ein kleines Problem: Ich möchte in einem Rutsch mehrere Arrays auslesen...Dafür will ich aber nicht jedesmal eine neue Schleife machen, weil das folgen auf mein optisches Layout hat.

und zwar sollen die Arrays dann in einer Tabbelle eingetragen werden:

Spalte1|Spalte2|Spalte3|Spalte4|Spalte5

und dort soll dann zu jeder Spalte ein entsprechendes Array hinzugefügt/eingetragen werden mit dem <td>-Tag (Spalte1 erste Zeile = array1[0], spalte 2 erste Zeile=array2[0]......spalte 4 vierte Zeile = array4[3].....usw......)

hoffe ihr könnt mir weiterhelfen!!


----------



## hpvw (6. September 2005)

Du könntest es mit [phpf]array_shift[/phpf] versuchen:
	
	
	



```
$temp1=$array1;
$temp2=$array2;
//...
while ( ($t1=array_shift($temp1)) != null 
    AND ($t2=array_shift($temp2)) != null 
    /* AND ...*/) {
    echo $t1." ".$t2."\n";
}
```
Ob diese verglichene Zuweisung funktioniert, müßtest Du mal probieren, da bin ich mir nicht sicher. Ansonsten müßtest Du die Zuweisungen in der Schleife machen und mit [phpf]count[/phpf] in der Schleifenbedingung prüfen.

Gruß hpvw


----------



## Grunge (6. September 2005)

mh scheint nicht zu funktonieren da ich die fehlermeldung



> Warning: array_shift(): The argument should be an array in /usr/export/www/hosting/ruelingpunks/Wolftec/hp/store.php on line 38


bekomme

so sieht mein code aus meines erachtens nach arrays..so habe ich sie jedenfalls deklariert. Hätte ich euch vielleicht sagen sollen das ich hiermit sessinsarbeite!

```
<?
	  $menge=$_SESSION["menge"];
	  $preise=$_SESSION["preise"];
	  $ware=$_SESSION["user_ware"];
	  $artnr=$_SESSION["artnr"];
	

while ( ($t1=array_shift($menge)) != null 
    AND ($t2=array_shift($preise)) != null 
   /AND ($t3=array_shift($ware)) != null  
   AND ($t4=array_shift($artnr)) != null) {
    
      echo "  <td><input value=\"".$t1."\" name=\"menge\" type=\"text\" id=\"menge\" maxlength=\"4\"></td>";
      echo "  <td>".$t2."</td>";
	  echo "  <td>".$t3."</td>";
	
	  
      echo "  <td>".$t4."</td>";
	 
	}
	  ?>
```


----------



## hpvw (6. September 2005)

Prüfe doch mal mit [phpf]var_dump[/phpf] was Du tatsächlich übergibst. Außerdem ist da noch ein Slash von dem Kommentar übrig geblieben.

EDIT: Warum speicherst Du denn nicht gleich in einem zweidimensionalen Array?

Gruß hpvw


----------



## Grunge (6. September 2005)

sei mir nicht böse aber von einem 2d Array hab ich noch nichts gehört kannst du mir mehr darüber erzählen


----------



## hpvw (7. September 2005)

Ein 2-dimensionales Array ist nichts anderes, als ein Array, das Arrays enthält.
	
	
	



```
$warenkorb=array();

$warenkorbItem=array();
$warenkorbItem['menge']=10;
$warenkorbItem['preis']=20.50;
$warenkorbItem['user_ware']='DVD';
$warenkorbItem['artnr']=123;

$warenkorb[]=$warenkorbItem;

$warenkorbItem=array();
$warenkorbItem['menge']=1;
$warenkorbItem['preis']=9.99;
$warenkorbItem['user_ware']='Buch';
$warenkorbItem['artnr']=124;

$warenkorb[]=$warenkorbItem;

//Beispiel direkter Zugriff auf den Preis
//des ersten Eintrags
echo $warenkorb[0]['preis'];

//Beispiel zum durchlaufen aller Artikel 
//im Warenkorb
foreach ($warenkorb as $artikel) {
    echo $artikel['preis'];
    echo $artikel['menge'];
    //...
    echo "\n";
}
```
Zu Arrays in PHP siehe auch: http://de3.php.net/manual/de/language.types.array.php

Gruß hpvw


----------

