Zeilen zu Matrix zusammenfügen

Cappaja

Erfahrenes Mitglied
Hallo,

ich lese zeilenweise eine Datei aus und speichere die Werte wie folgt ab:

PHP:
$save[$i++] = array($name, $latitude, $longitude, $city);

Jetzt möchte ich die einzelnen Datensätze so zusammenfassen, dass eine große Matrix entsteht wo name, latitude, longitude und city quasi die Spalten darstellen, die einzelnen arrays somit untereinander zusammengeführt werden.
Höchst wahrscheinlich ist es sinnvoller die Datensätze ganz anders abzuspeichern, aber um diese Uhrzeit nach so vielen Stunden seh ich rein gar nichts mehr. Ich bin somit um jeden Ratschlag dankbar

Grüße Cappaja
 
PHP:
foreach( $save as $zeile )
{
  ?><tr><td><?php echo $zeile[0]; ?></td><td><?php echo $zeile[1]; ?></td><td><?php echo $zeile[2]; ?></td><td><?php echo $zeile[3]; ?></td></tr><?php
}

Und auf das $i++ kannst Du eigentlich verzichten. PHP zählt den Array-Index selbst hoch.
 
Hallo threadi,

erstmal danke für die Hilfe auch wenn es nicht ganz das ist was ich suche. Ich möchte keine Ausgabe sondern eine Matrix erstellen die ich weiterverarbeiten kann. Ich möchte später nach $name sortieren und die neu sortierte Reihenfolge anschließend indizieren um sie mit anderen Daten in MATLAB zu fusionieren. Bei deinem Beispiel kann man die Ausgabe übrigens noch etwas übersichtlicher gestalten:

PHP:
printf("<tr><td>%s</td><td>%s</td></tr>\n", $zeile[0], $zeile[1]);

Also nochmals, ich möchte die zeilenweise eingelsenen Daten in eine Matrix speichern um die Daten weiter verarbeiten (sortieren) zu können, ich hoffe Ihr wisst jetzt was ich meine :)

Grüße Cappaja
 
Das, was du in deiner Variablen $save wiederfindest, IST eine Matrix der Ordnung n*4, wobei n die Anzahl der Zeilen in deiner Datei ist.

(Zweidimensionale) Matrizen werden in PHP in Form von (zweidimensionalen) Arrays abgebildet, wobei $array[0][0] Zeile eins, Spalte eins bedeutet, $array[3][7] Zeile vier, Spalte acht usw.

Wie du dann damit umgehst, bleibt dir selbst überlassen. Du kannst natürlich auch meinetwegen $name als Index für die erste Dimension nehmen und die erste Dimension dann danach sortieren lassen:
PHP:
$save['$name'] = array($latitude, $longitude, $city);
 
Hallo Erik,

natürlich hast du recht, ich habe das Problem vielleicht nicht gut genug geschildert. Ich wusste nicht wie ich in PHP ein 2-dimensionales array nach einer Spalte sortieren kann, sodass die Datensätze erhalten bleiben. Habe es jetzt mit array_multisort einwandfrei gelöst bekommen:

PHP:
$sortArray = array();
foreach($save as $key => $array) {
	$sortArray[$key] = $array[0];
}
array_multisort($sortArray, SORT_ASC, SORT_STRING, $save);

War schlecht erläutert, ich bessere mich - versprochen! ;)

Grüße Cappaja
 
Zurück