PHP: Array in HTML Tabelle ausgeben?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du fügst ein Array statt einen Wert in einen String ein, und das funktioniert nicht. Außerdem iterierst du über ein assoziatives Array mit einer Schleife, was man nicht machen sollte.

Lass die innere foreach-Schleife weg, die äußere foreach-Schleife sollte so aussehen:

foreach ($studis as $student => $name){
  $tabelle .= "<tr>
    <td>$name[student]</td>
    <td>$name[projekt]</td>
    <td>$name[ende]</td>
  </tr>";
  }
}

Falls die Syntax für dich neu ist: Innerhalb eines Strings werden die Anführungszeichen weggelassen. Normalerweise würde es $name["student"] etc. heißen.

Woher ich das weiß:Studium / Ausbildung – Abitur 2016

Es sollte sich eher so lesen:

foreach ($studis as $idx => $student){
        $tabelle .= "<tr><td>$student[student]</td><td>$student[projekt]</td><td>$student[ende]</td></tr>\n";
}

Die Form as key => val ist eigentlich in Deinem Fall unnötig, weil der Schlüssel der Index des assoziativen Array innerhalb des Arrays $studis ist.

Es würde also genausogut mit

foreach ($studis as $student)

funktionieren. Es wäre IMHO auch schlauer die Attribute (Schlüssel) im assoziativen Array sprechender zu gestalten, aber das ist Geschmackssache.

Du hast da einen array of arrays definiert. Du iterierst aber über die erste Dimension und gibst deren Inhalt sofort aus, also weitere arrays. In $name steht jeweils

array("student" => "Bauer", "projekt" => "/", "ende" => "/")

usw. Das kann PHP nicht ausgeben. Deshalb "Array".

Du müsstest

$name['student'] 

ausgeben lassen, um "Bauer" zu erhalten.

pythonpups  25.01.2018, 00:34

Das zweite foreach dürfte Dir doch dreimal ein td-Element anfügen, oder? Das iteriert über $name und das ist in dem Moment ein Array mit drei Elementen.

Bist Du sicher, dass Du den foreach-loop richtig verstanden hast? Die key-Variablen ($student und $ende) benutzt Du gar nicht. Die Namensgebung legt nahe, dass Du erwartest, dass Du damit auf die array-Elemente zugreifen kannst, das geht so aber nicht. In der zweite foreach Schleife enthält $ende der Reihe nach die Worte "student", "projekt" und "ende", während $datum entsprechend "Bauer", "/" und "/" annimmt.

0

Ich denke eher du möchtest

foreach($studis as $studenten)
{
foreach($studenten as $student => $wert)
{
//do something
}
}

Ist allerdings ungetestet.