Mehrdimensionales Array aus „Tabelle“ erstellen?

wireless-dj

Mitglied
Moin,
ich sitze vor einem Problem, und habe wieder einen Knoten im Hirn,
Es gibt eine Variable, die mehrere Werte enthält. Diese Werte sind aufgebaut, wie eine Tabelle.
Das grundsätzliche Problem ist, dass ich einzelne Werte aus dieser Tabelle abfragen muss,
und nicht weiß, wie ich da ran kommen soll, deswegen der Gedanke, diese Tabelle in ein
Array zu schreiben, und dann könnte ich sie vielleicht abfragen.

nur wie?

die Variable sieht wie folgt aus: ( zur besseren Lesbarkeit hier als Tabelle dargestellt )

Code:
Datum1|Wert1|Wert2##
Datum2|Wert1|Wert2##
Datum3|Wert1|Wert2##
Datum4|Wert1|Wert2##
...
...

Die einzelnen Zeilen werden also durch die ## getrennt, und die einzelnen Felder in den Zeilen durch |.
Wieviele Zeilen es sind, ist immer unterschiedlich, momentan steht aber alles in einer Variable.
Mit
Code:
explode
müsste man das doch in ein mehrdimensionales Array schreiben können?

Die Abragen laufen darauf hinaus, dass ich wissen möchte, wieviele Zeilen es gibt, ob ein Datum vor oder nach
einem anderen Datum liegt, und falls dies zutrifft, welche Werte sich dann dahinter verbergen.

Muss das überhaupt in ein Array, oder kann ich die Abfragen ich anders ausführen?
Wie kriege ich das in ein Array geschrieben?
und wie müsste die Abfrage aussehen?

Danke & Gruß,

Volker
 
Test: PHP Sandbox
PHP:
<?php
$txt = 'Datum1|Wert1|Wert2##Datum2|Wert1|Wert2##Datum3|Wert1|Wert2##Datum4|Wert1|Wert2';
$rows = explode('##', $txt);
$table = array_map(
    function($row){return explode('|', $row);}, 
    $rows
);
var_dump($table);
?>
 
Ich muss nochmal stören.
Es gibt Fehler, wenn ich das Array mit foreach durchlaufe.
Die Variable $txt ist nicht ganz korrekt.
Du hast sie so definiert:
$txt = 'Datum1|Wert1|Wert2##Datum2|Wert1|Wert2##Datum3|Wert1|Wert2##Datum4|Wert1|Wert2';
Bei mir steht sie so:
$txt = 'Datum1|Wert1|Wert2##Datum2|Wert1|Wert2##Datum3|Wert1|Wert2##Datum4|Wert1|Wert2##';
Also am Ende noch mal das ##

Hast Du noch eine Idee?
 
Ein einfacher trim($txt. '#') schneidet alle # am Anfang und Ende weg. Test

Oder wenn es wirklich nur Doppel# sein soll, dann mot einem preg_match.
 
Zurück