enrico: PHP-Array in JS-Array umwandeln

Beitrag lesen

Guten Abend,

bei meinem Projekt "DVD-Verwaltung" klappen die geabsichtigten Funktionalitäten (Einlesen aus
Datei, Übergabe an ein PHP-Array, auf- und absteigende Sortierungen) endlich einwandfrei.

Mein nächster Step ist nun der Aufbau einer ausgefeilten Filterfunktion über drei von einander
abhängiger Selectlisten mittels Javascript.

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.

Dies klappt mit nachfolgendem Code fast perfekt:

function PHP_Array_umwandeln ($Umzuwandelndes_PHP_Array, $Name_des_JS_Arrays, $Rekursion = false)
      {
         $JS_Array = $Rekursion ? $Name_des_JS_Arrays . "{" : $Name_des_JS_Arrays . " = {\n";
         $Name_des_JS_Arrays = "\t$Name_des_JS_Arrays";
         reset ($Umzuwandelndes_PHP_Array);

while (list ($Schluessel, $Wert) = each ($Umzuwandelndes_PHP_Array))
         {
            if (($Schluessel == "Nr") || ($Schluessel == "Inhalt"))
            {
               next;
            }
            else
            {
               $JS_Schluessel = "'" . $Schluessel . "':";

if (is_array ($Wert))
               {
                  $Zwischenspeicher [] = PHP_Array_umwandeln ($Wert, $JS_Schluessel, true);
               }
               else
               {
                  if (is_numeric ($Wert))
                  {
                     $JS_Schluessel .= "$Wert";
                  }
                  else
                  {
                     static $Muster = array ("\", "'", "\r", "\n");
                     static $Ersetzungen = array ('\', '\'', '\r', '\n');
                     $JS_Schluessel .= "'" . str_replace ($Muster, $Ersetzungen, $Wert) . "'";
                  }

$Zwischenspeicher [] = $JS_Schluessel;
               }
            }
         }

$JS_Array .= implode (', ', $Zwischenspeicher);

$JS_Array .= "}\n";

return $JS_Array;
      }

$Inhalt = unserialize (file_get_contents ("../SAMMLUNG/Sammlung.txt"));

echo PHP_Array_umwandeln ($Inhalt, 'Inhalt');

Prinzipiell läuft meine Funktion wie geplant, ich kann auf die übergebenen Werte aus Javascript heraus zugreifen,
bis auf folgende Ungereimtheiten:

Die Ausgabe beginnt erst bei 1 und nicht bei 0, so dass die erste Zeile der einzulesenden Datei weggelassen wird,
und zweitens habe ich bei allen FSK-Angaben, ausgenommen die letzte Listung, die Zusätze "\r\n".

Hier die Bildschirmausgabe (zusammengefasst):

Inhalt = {
           '1':{'Nr':2, 'Titel':'ORIGINAL SIN', 'Genre':'Drama/Thriller', 'FSK':'16\r\n'}
         , '2':{'Nr':3, 'Titel':'OPEN WATER 2', 'Genre':'Thriller', 'FSK':'12\r\n'}
         , '3':{'Nr':4, 'Titel':'LEFT IN DARKNESS - DÄMONEN DER DUNKELHEIT', 'Genre':'Horror/Fantasy', 'FSK':'18\r\n'}

...usw...

, '28':{'Nr':29, 'Titel':'STIRB LANGSAM 4.0', 'Genre':'Action', 'FSK':16}
      }

Wenn ich die Abfrage nach der "Nr" oder dem "Inhalt" mit vorzeitigem Abbruch der while-Schleife weglasse, dann beginnt
die Umwandlung zwar bei 0, aber ich benötige nur die Spalten "Titel", "Genre" und "FSK".

Die Ausgabe im Quelltext sieht hier wie folgt aus:

Inhalt = {
           '0':{'Nr':1, 'Titel':'LIGHTHOUSE - INSEL DES GRAUENS', 'Inhalt':'Mitten auf dem ..', 'Genre':'Horror/Thriller', 'FSK':'16\r\n'}
         , '1':{'Nr':2, 'Titel':'ORIGINAL SIN', 'Inhalt':'Im Kuba des ausgehenden 19....', 'Genre':'Drama/Thriller', 'FSK':'16\r\n'}

...usw...

, '28':{'Nr':29, 'Titel':'STIRB LANGSAM 4.0', 'Inhalt':'Eine neue Art...', 'Genre':'Action', 'FSK':16}
      }

Was muß ich bei meinem Code umstellen/korrigieren, damit ich, vom "Datensatz" 0 beginnend nur die Spalten "Titel", "Genre" und "FSK"
erhalte ?

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

Vielen Dank für Eure Anregungen/Tips/Hilfestellungen.

Gruß
Enrico