Tim Tepaße: PHP-Array in JS-Array umwandeln

Beitrag lesen

Hallo,

Damit ich mich an die Umsetzung dieses Vorhabens machen kann, ist es aber zunächst notwendig, dass ich das eingelesene PHP-Array in ein Javascript-Array umwandle.

Ich würde bei so etwas spontan immer JSON nehmen, das auf JS-Notation basierende Format für Datenstrukturen. Mit PHP 5.2 gibt's auch schon ein eingebautes json_encode(). Damit erspart man sich vermutlich viel Ärger, wenn man die Datenstruktur einfach in PHP zurechtstutzt und dann in JSON umwandelt.

Hier die Bildschirmausgabe (zusammengefasst):
      Inhalt = {
           '1': ...

Das ist übrigens kein JS-Array, sondern ein Javascript-Objekt,das einige grundsätzliche Eigenheiten mit der Datenstruktur namens Map / Hash / Dictionary / Table / Assoziatives Array teilt. Javascriptige Arrays sind kontinuierlich mit Integern indizierte Listen. PHP gehört zu den Sprachen, die numerisch indizierte und mit whatever indizierte Tabellen zu einer einheitlichen Struktur vereinheitlicht haben, die verwirrenderweise auch Array heisst. Zum Zwecke des Zugriffs macht das in JS zwar keinen Unterschied; eine vernünftige JSON-Funktions würde aber ein »richtiges« Array ("[1, 2, 3]") ausspucken.

Wobei: Es macht doch einen ziemlich heftigen Unterschied: In der JS-Umgebung ist Dein JS-Objekt mit Strings indiziert, d.h. Du musst mit Inhalt["1"] statt Inhalt[1] darauf zugreifen; einfache Iteration ist also nur umständlich möglich.

Was muß ich ändern, damit ich die Zusätze "\r\n" bei den FSK-Angaben wegbekomme ?

Ich hab ja nicht wirklich Ahnung von PHP, aber wenn ich in die Funktionsreferenz von is_numeric() gucke, dann spuckt das auch Wahr für »numerische Strings« aus, d.h. Strings, die wie Zahlen aussehen. Kann es vielleicht sein, dass Deine FSK-Zahlen in der Eingabe-Datenstruktur nicht als Zahlen, sondern als Strings vorliegen, aber trotzdem in den is_numeric-Zweig landen und dort eben nicht mit Deiner String-Bereinigungs-Routine behandelt werden. Weswegen ich darauf komme? In Deiner Ausgabe sind die Zahlen Strings statt Zahlen im Sinne der JS-Notation.

(is_numeric ist ja wirklich schlimm. Jesses!)

Tim