Werte eines Array in HTML-Tabelle ausgeben (Alphabetisch in Spalte - nicht in Zeile)

dwex

Erfahrenes Mitglied
Hallo Leute,

ich stehe vor einem gedanklichen Problem bei dem in eure Hilfe benötige.

Ich habe ein Array mit Sprachen welches alphabetisch sortiert ist:
Code:
$flaggen = Array
(
    [17] => albanisch
    [5] => arabisch
    [19] => aramäisch
    [21] => belgisch
    [9] => bulgarisch
    [1] => englisch
    [3] => französisch
    [18] => griechisch
    [13] => indisch
    [6] => italienisch
    [2] => kroatisch
    [22] => kurdisch
    [10] => niederländisch
    [14] => persisch
    [20] => polnisch
    [24] => portugiesisch
    [12] => rumänisch
    [7] => russisch
    [23] => serbisch
    [16] => slowakisch
    [8] => spanisch
    [15] => tschechisch
    [4] => türkisch
    [11] => ungarisch
)

Dieses Array gebe ich momentan so aus, dass immer nach 3 Sprachen eine neue Zeile gemacht wird - somit habe ich eine horizontale Sortierung.

Hier mein funktionierender Code:
PHP:
$o = 1;
$sprachen_form = '<table width="100%" cellspacing="0" cellpadding="0" border="0">
    <tbody><tr>';
foreach($flaggen as $key=>$value) {

	$sprachen_form .= '<td width="33%"><input type="checkbox" name="sprachen[]" alt="sprachen[]" value="'.$key.'"'.$checked.' />&nbsp;'.$value.'</td>';

	if($o % 3 == 0) {
		$sprachen_form .= '</tr>';
	}

	$o++;

}
$sprachen_form .= '</tr></tbody>
</table>';

die tabelle sieht dann so aus:
Code:
 albanisch	 arabisch	 aramäisch
 belgisch	 bulgarisch	 englisch
 französisch	 griechisch	 indisch (und so weiter)

jetzt möchte ich aber nicht horizontal sortieren sondern vertikal.
das ganze sollte dann so (ähnlich) aussehen:
Code:
 albanisch     belgisch     französisch	 
 arabisch     bulgarisch     griechisch	 
 aramäisch    englisch    indisch (und so weiter)

Kann mir bitte jemand erklären wie man das machen könnte?

Vielen Dank im voraus!
 
Ich glaube so stimmt es:

PHP:
<?php
$flaggen = Array
(
    "albanisch",
    "arabisch",
    "aramäisch",
    "belgisch",
    "bulgarisch",
    "englisch",
    "französisch",
    "griechisch",
    "indisch",
    "italienisch",
    "kroatisch",
    "kurdisch",
    "niederländisch",
    "persisch",
    "polnisch",
    "portugiesisch",
    "rumänisch",
    "russisch",
    "serbisch",
    "slowakisch",
    "spanisch",
    "tschechisch",
    "türkisch",
    "ungarisch"
);

$spalten = 3;
$zeilen = count($flaggen)/$spalten;

echo $zeilen;
echo "<br />";

echo "<table>";

for ($a = 1; $a < $zeilen; $a++) {
    echo "<tr>";
    echo "<td>" . $flaggen[$a] ."</td><td>" .$flaggen[$a + $zeilen] ."</td><td>" .$flaggen[$a + 1 + $zeilen] ."</td>";
    echo "</tr>";
}

echo "</table>";
?>
 
Servus Tombe,

vielen Dank für deine Hilfe - du hast mir sehr weiter geholfen.
leider funktioniert der Quelltext so wie du in gepostet hast nicht korrekt.
Dank deiner Hilfe konnte ich das ganze aber so umschreiben das es funktioniert.

Hier noch der Quelltext für "die Nachwelt":
PHP:
$spalten = 3;
$zeilen = ceil(count($flaggen)/$spalten);

echo $zeilen;
echo "<br />";

echo "<table>";

for ($a = 0; $a < $zeilen; $a++) {


    echo "<tr>";
    echo "<td>" . $flaggen[$a] ."</td><td>" .$flaggen[$a + $zeilen] ."</td><td>" .$flaggen[$a + $zeilen + $zeilen] ."</td>"; 
    echo "</tr>";
}

echo "</table>";

Ich habe $zeilen mit ceil() gerundet damit das Ergebnis eine Ganzzahl ist.
Ausserdem habe ich in der for-Schleife die Nummernzuweisung des Flaggen-Arrays geändert.
Und zu guter letzt habe ich $a beim Schleifendurchlauf mit 0 statt mit 1 beginnen lassen (damit auch der erste Wert aus dem Array angezeigt wird).

Jetzt funktioniert´s

Nochmals vielen Dank für deine Hilfe
 
Zuletzt bearbeitet:
Zurück