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

explode-Funktion (Array)

Dsimon24

Mitglied
Hallo zusammen,

ich versuche gerade ein Array:

(mittels print_r ausgegeben)
Array
(
[1] => Array ( [A] => id;datum;betrag;bemerkung;optKategorie;optBemerkung;item_order;";";";";";";"; )
[2] => Array ( [A] => 3;"2015-09-01";"2.00";"Parkticket";";";"5"; )
[3] => Array ( [A] => 4;"2015-09-04";"22.00";"CD Brenner";";";"7"; )
)

so auseinanderzunehmen, sodass ich jeden Datensatz einzeln ansprechen kann.
Beispiel, das Datum aus Array2 oder die Bezeichnung aus Array3 usw............

Mein gedanke war, dies mittels 'explode' zu realisieren,
scheint mir aber, als wenn dies keine gute Idee war.

Hat jemand einen Rat für mich, wie ich mein Vorhaben realisieren kann?

Gruß, David
 
Werbung:
Offenbar sind deine gewünschten Daten ja noch nicht in Array-Form, sondern als CSV mit Semikolon separierte Strings. Also musst du die nochmals mittels split in ein Array umwandeln und dann musst du wissen, an welcher Position die gesuchten Daten stehen. Etwa so (nimm es als Pseudcode):

PHP:
$x1           = $myArray[1];   //Liefert Element 1, Array mit Element A
$x1CsvString  = $x1['A'];      //Liefert Elemet A. also den CSV
$x1Values     = split($x1CsvString, ';');  //CSV Split liefert Array
$x1Value      = $x1Values[3];              //greift auf den gesuchten Wert zu

Musst wohl auch noch die Hochkomma durch nichts ersetzen.
 
Werbung:
Viele Wege führen hier zum Ziel. Wie aber @B3nnoX schon sagt ist split() seit PHP 5.3.0 deprecated und man sollte stattdessen explode() verwenden. str_getcsv() wäre hier glaube ich der richtige Weg, da du damit einen CSV-String in ein Array parst und somit deine Felder einzeln ansprechen kannst.

Du könntest aber natürlich auch mit explode() arbeiten.
 
Hab jetzt mal ein wenig rumprobiert und konnte das Problem lösen, danke für eure Hilfe :)

Jetzt habe ich noch ein Problem mit den Arrays aus einer .xls (mittels PHPExcel).
Wenn ich eine .xls mittels PHP bearbeiten möchte, erhalte ich folgendes:

Array ( [A] => id => datum [C] => betrag [D] => bemerkung [E] => optKategorie [F] => optBemerkung [G] => item_order )
Array ( [A] => 3 => 09-01-15 [C] => 1.22 € [D] => Parkticket [E] => [F] => [G] => 5 )
Array ( [A] => 4 => 09-04-15 [C] => 2.33 € [D] => CD Brenner [E] => [F] => [G] => 7 )

Kann man da auf die einzelnen Daten zugreifen?
Das [A] =>, [B =>], ... ist da irgendwie im Weg..
 
Mach doch mal ein echo "<pre>" und echo </pre> vor und nach deinem var_dump (print_r), dann siehst doch die Hierarchie-Struktur besser. Was man im var_dump sieht, ist eigentlich auch zugreifbar :). Und den Output solltest dann hier unter Einfügen --> Code bereitstellen, falls es dann immer noch Fragen gibt.
 
Werbung:
Mach doch mal ein echo "<pre>" und echo </pre> vor und nach deinem var_dump (print_r), dann siehst doch die Hierarchie-Struktur besser. Was man im var_dump sieht, ist eigentlich auch zugreifbar :). Und den Output solltest dann hier unter Einfügen --> Code bereitstellen, falls es dann immer noch Fragen gibt.
Pfui, dann aktiviert man doch lieber XDebug bevor man sowas macht. Dann reicht auch ein var_dump() völlig aus ;)
 
So, das kommt nun raus:

Array
(
[A] => id
=> datum
[C] => betrag
[D] => bemerkung
[E] => optKategorie
[F] => optBemerkung
[G] => item_order
)

Array
(
[A] => 3
=> 09-01-15
[C] => 1.22 €
[D] => Parkticket
[E] =>
[F] =>
[G] => 5
)

Array
(
[A] => 4
=> 09-04-15
[C] => 2.33 €
[D] => CD Brenner
[E] =>
[F] =>
[G] => 7
)

Ich würde gerne auf die einzelnen Elemente zugreifen können,
damit ich mit diesen dann quasi weiterarbeiten kann.

Bspw. 'betrag' aus dem 1. Array,
1.22€ aus dem 2. Array - usw.

Dazu fehlt mir gerade das Wissen,
wie ich das Array so auseinanderpflücken kann,
sodass mich die Index-Buchstaben nicht 'behindern'.
 
Werbung:
Werbung:
Wieso fehlt da eigentlich [ B ]??
Schreib mal das [ B ] ohne Leerzeichen :)
Gute Frage, scheint beim Kopieren was fehlgeschlagen zu sein.
[B] ist vom System zum Fett markieren belegt.

Wie ich es dennoch so hinbekomme?

Einfach mit einem umschließenden [plain][/plain] :cool:
BBCodes schrieb:
[PLAIN] - Natürlicher und unveränderter Text
Deaktiviert die BBCode-Übersetzungen für den markierten Text.
https://www.html.de/help/bb-codes
 
Zuletzt bearbeitet:
Pfui, dann aktiviert man doch lieber XDebug bevor man sowas macht. Dann reicht auch ein var_dump() völlig aus ;)
Also diese Bemerkung empfinde ich als ziemlichen Unsinn. Wenn man schon var_dump oder print_r verwendet und diese Funktionen die Ausgabe standardmäßig als Text (mit Zeilenvorschüben und führenden Leerzeichen) formatieren, dann kann man sich die von den Entwicklern kunstvoll formatierte Ausgabe auch in einer <pre>-Section entsprechend formatiert anzeigen lassen. Das ist allemal einfacher, als sich extra in ein Debug-Tool einarbeiten zu müssen und macht insbesondere bei hierarchischen und komplexen Datenstrukturen auch Sinn.
 
Werbung:
Also diese Bemerkung empfinde ich als ziemlichen Unsinn. Wenn man schon var_dump oder print_r verwendet und diese Funktionen die Ausgabe standardmäßig als Text (mit Zeilenvorschüben und führenden Leerzeichen) formatieren, dann kann man sich die von den Entwicklern kunstvoll formatierte Ausgabe auch in einer <pre>-Section entsprechend formatiert anzeigen lassen. Das ist allemal einfacher, als sich extra in ein Debug-Tool einarbeiten zu müssen und macht insbesondere bei hierarchischen und komplexen Datenstrukturen auch Sinn.
Du scheinst ja nicht wirklich eine Ahnung davon zu haben wovon du sprichst oder?

Es ist einfacher einmal XDebug unter XAMPP o.Ä. zu aktivieren, als immer wieder dieses dämliche <pre> davor zusetzen. Dazu kommt noch das XDebug die Ausgabe wenigstens ordentlich farblich formatiert, mehr Informationen liefert und du somit wesentlich mehr Überblick hast als mit dem anderen Scheiß.

Hier mal ein Link: http://www.wikihow.com/Configure-XDebug-in-XAMPP-(1.7.2/Later)-on-Windows

Das schafft doch jedes Kind.

var_dump mit XDebug:
xdebug_vardump2.png


Fehlerausgabe mit XDebug:
Screen-shot-2009-12-30-at-8.05.52-AM-718x398.png
 
Zuletzt bearbeitet:
Es ist einfacher einmal XDebug unter XAMPP o.Ä. zu aktivieren, als immer wieder dieses dämliche <pre> davor zusetzen.
Ich sage ja nicht, dass XDebug nicht auch Vorteile hat, aber du hast doch scheinbar auch gewisse Scheuklappen auf und betrachtest das Ganze zu sehr aus der Sicht eines Profis. Zum einen hat nicht jeder XAMPP installiert, sondern auch (wie ich) IIS und dann muss man Erweiterungen installieren und konfigurieren wie man es beispielweise unter http://www.absolutegun.com/2013/09/28/how-to-enable-xdebug-and-php-in-phpstorm-for-windows/ findet. Das mag zwar kinderleicht sein, aber in etlichen Fällen auch unter den Spruch zu fallen, dass man mit Kanonen auf Spatzen schießt.

Es haben viele private Homepagebetreiber nur sehr beschränkten Bedarf an PHP, da will man eine Mini-Anwendung betreiben und die bleibt dann, wenn sie mal funktioniert, für ewige Zeiten stabil. Da ist ein Debugger absolut überflüssig, auch wenn der wesentlich bessere Funktionen bietet. Und wenn mich das <pre> stört, dann schreibe ich eine einzeilige Mini-Wrapper-Funktion my_var_dump($mixed), die das <pre> addiert und die ich noch optional durch das Setzen einer Konstanten define('MY_DEBUG', $bool) ein- und ausschalten kann.

Das mag nicht sonderlich professionell sein, aber wie gesagt, nicht alle hier sind Profis und benötigen professionelle Tools. Es ist eben nicht immer sinnvoll, das Optimum anzustreben.
 
Das mag nicht sonderlich professionell sein, aber wie gesagt, nicht alle hier sind Profis und benötigen professionelle Tools. Es ist eben nicht immer sinnvoll, das Optimum anzustreben.
Also das sollte eigentlich dass sein, was ein Programmierer anstreben sollte aber nun gut. Das jemand der sich nur einmal im Monat mit PHP beschäftigt, nicht unbedingt XDebug benötigt ist mir schon klar aber es ist durch aus eine Hilfe damit zu arbeiten.
 
Werbung:
Zurück
Oben