Logik von foreach()

david07

Mitglied
Hi,

habe mal eine logische Frage zu foreach()
komme irgendwie nicht weiter:

PHP:
//Das Array:
$arr[0][0] = "1-9";
$arr[0][1] = "3,95";
$arr[1][0] = "10-29";
$arr[1][1] = "3,90";

echo ("<table>");
        foreach ($arr as $v1)
            {
           echo ("<tr>");

            foreach ($v1 as $v2)
                {
                echo "<td>$v2</td>";
                }
           echo ("</tr>");
            }
         echo ("</table>");

Das Ergebnis ist nun:
Code:
|----------|---------|
| 1-9      |  3,95  |
|----------|---------|
| 10-29    |  3,90  |
|----------|---------|

ich brauche es aber genau andersherum:
Code:
|----------|-----------|
| 1-9      | 10-29   |
|----------|-----------|
| 3,95     |  3,90    |
|----------|-----------|

Leider kenne ich mich mit der foreach() nicht gut genug aus. Bin nicht ganz sicher wie ich die <td> udn <tr> setzten muss um die tabelle wie gewünscht umzukehren.


Vielen Dank schonmal!!
 
Hi,
ich glaube mit foreach geht das in dem Fall nur sehr schwer, ich habe es hier einfach mal mit for gemacht:

Code:
<?php
//Das Array:
$arr[0][0] = "1-9";
$arr[0][1] = "3,95";
$arr[1][0] = "10-29";
$arr[1][1] = "3,90";

echo ("<table>");

for ($i = 0; $i < sizeof($arr[0]); $i++)
{
    echo "<tr>";
    for ($j = 0; $j < sizeof($arr); $j++)
    {
        echo "<td>".$arr[$j][$i]."</td>";
    }
    echo "</tr>";
}
echo ("</table>"); 
?>

So geht es denke ich am einfachsten.

mfg.Fide
 
Hi.
Das Ergebnis ist nun:
Code:
|----------|---------|
| 1-9      |  3,95  |
|----------|---------|
| 10-29    |  3,90  |
|----------|---------|

ich brauche es aber genau andersherum:
Code:
|----------|-----------|
| 1-9      | 10-29   |
|----------|-----------|
| 3,95     |  3,90    |
|----------|-----------|

Leider kenne ich mich mit der foreach() nicht gut genug aus. Bin nicht ganz sicher wie ich die <td> udn <tr> setzten muss um die tabelle wie gewünscht umzukehren.
Es wäre am einfachsten du würdest dein Array transponieren:
PHP:
//Das Array:
$arr[0][0] = "1-9";
$arr[1][0] = "3,95";
$arr[0]1] = "10-29";
$arr[1][1] = "3,90";

Oder du verwendest statt foreach einfach for Schleifen. Ansonsten wirst du mit foreach nicht viel Erfolg haben, da du die HTML Tabelle zeilenweise ausgeben mußt und foreach das Array auch zeilenweise durchgeht. Du müßtest das Array im Grunde spaltenweise durchlaufen was mit foreach nicht möglich ist.

Gruß

\edit: Oh, da war jemand schneller...
 
Hi,

verdammt hatte nicht daran gedacht das ich ja (logischerweise) das array nicht spaltenweise lesen kann.

Die Variante mit der schleife ist wohl die beste Lösung. Danke @Fide!

Transponieren geht leider nicht, da das ganze ein Teil einer recht komplexen Klasse ist und das Array aus mehreren DB's zusammengesetzt wird, wäre das zu unübersichtlich.

Vielen Dank für eure Hilfe!
 
Hi,

echt Oh diese Entwicklung ist wohl an mir vorüber gegangen :)

Nur so interssehalber:

Wie unterscheidet sich denn echo (" "); bzw. echo " "; für den Interpreter? Bzw. warum sollte echo (" "); nicht mehr verwendet werden?

Lg David
 
Zurück