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

ein Multiarray sortieren und in einer Tabelle ausgeben

einohrküken

Neues Mitglied
Hallo,

bin ganz neu hier und Anfängerin, brauche also dringend Hilfe, weil ich mit googeln bisher nicht weiterkam, oder zu blöd bin, das gelesene zu verstehen. Könnt ihr mir mal ein bischen auf die Sprünge helfen?

Hier mein Problem:

Ich muss auf eine externe Textdatei (über eine URL) zugreifen die wie folgt aussieht:

Code:
name_1|strasse_1|plz_1|land_1|tel_1|mail_1|name_3|strasse_3|plz_3|land_3|tel_3|mail_3|name_2|strasse_2|plz_2|land_2|tel_2|mail_2|
... usw.

Mit folgendem Script erstelle ich erst einmal ein brauchbares Array aus der Textdatei:

PHP:
$string = explode('|', file_get_contents('beispiel.txt'));
$members = array();
for($i = 0; $i < count($string) - 6;)
{
$a['name'][] = $string[$i++];
$a['Stasse'][] = $string[$i++];
$a['plz'][] = $string[$i++];
$a['land'][] = $string[$i++];
$a['tel'][] = $string[$i++];
$a['mail'][] = $string[$i++];
}

Das funktioniert auch perfekt. Das Array sieht dann wie folgt aus:

Code:
array(6) 
{
["name"]=>
array(3) {
[0]=> string(6) "name_1"
[1]=> string(6) "name_3"
[2]=> string(6) "name_2"
}
["Stasse"]=>
array(3) {
[0]=> string(9) "strasse_1"
[1]=> string(9) "strasse_3"
[2]=> string(9) "strasse_2"
}
["plz"]=>
array(3) {
[0]=> string(5) "plz_1"
[1]=> string(5) "plz_3"
[2]=> string(5) "plz_2"
}
["land"]=>
array(3) {
[0]=> string(6) "land_1"
[1]=> string(6) "land_3"
[2]=> string(6) "land_2"
}
["tel"]=>
array(3) {
[0]=> string(5) "tel_1"
[1]=> string(5) "tel_3"
[2]=> string(5) "tel_2"
}
["mail"]=>
array(3) {
[0]=> string(6) "mail_1"
[1]=> string(6) "mail_3"
[2]=> string(6) "mail_2"
}

Jetzt möchte ich das Array aufwärts sortieren (alphabetisch nach 'name') und in einer 6-spaltigen Tabelle (in diesem Fall mit 3 Reihen) ausgeben.

Kann mir jemand sagen wie das geht und mir helfen?

Bin noch ziemliche Anfängerin, leider, heulll !!! :cry:

Liebe Grüße, Karin (Einohrküken)
 
Zuletzt bearbeitet:
Willkommen im Forum!

Hier ein Ansatz:

PHP:
<?php

$data = explode('|', file_get_contents('./data.txt'));

// Leere Einträge entfernen
$data = array_filter($data, create_function('$e', 'return trim($e) !== "";'));

$members = array();

$count = count($data);

for($i = 0; $i <= $count - 6; $i += 6) {
    $members[] = array(
        'name'    => $data[$i],
        'strasse' => $data[$i + 1],
        'plz'     => $data[$i + 2],
        'land'    => $data[$i + 3],
        'tel'     => $data[$i + 4],
        'mail'    => $data[$i + 5]
    );
}

// Sortieren
usort($members, create_function('$a, $b', 'return strcmp($a["name"], $b["name"]);'));

?>

<table border="1">
    <tr>
        <th>name</th>
        <th>strasse</th>
        <th>plz</th>
        <th>land</th>
        <th>tel</th>
        <th>mail</th>
    </tr>
<?php foreach ($members as $m): ?>
    <tr>
        <td><?php echo htmlspecialchars($m['name']); ?></td>
        <td><?php echo htmlspecialchars($m['strasse']); ?></td>
        <td><?php echo htmlspecialchars($m['plz']); ?></td>
        <td><?php echo htmlspecialchars($m['land']); ?></td>
        <td><?php echo htmlspecialchars($m['tel']); ?></td>
        <td><?php echo htmlspecialchars($m['mail']); ?></td>
    </tr>
<?php endforeach; ?>
</table>
 
Danke, danke, danke, danke, danke, danke, etc........

Hallo "mermshaus",

ein Ansatz nur? Das ist die perfekte Lösung !!!
Das kann ich ja 1 zu 1 übernehmen (wenn Du gestattest?).
Da muss ich ja nur noch ein wenig das Tabellen-Design modifizieren, whow!!!
Das wird ganz schnell gehen. Etwas mehr Zeit werde ich benötigen,
um das Script genau anzusehen und wirklich zu verstehen ( * will ja was lernen :-) *)....

Vielen Dank für Deine Hilfe, echt cool!!!

Herzliche Grüße von Einohrküken :P
 
Zurück
Oben