Thomas: string zu array

Hallo

aus einer DB lese ich folgenden PHP-Befehl:
array(1,2,4,6,8,9,10,11,12,13,14)

Nun möchte ich diesen als Array nutzen. Wie mache ich das?
Mit eval() krieg ich n'e Fehlermeldung:
Parse error: syntax error, unexpected $end in /home/httpd/vhosts/letrona.ch/httpdocs/administration/produkte/test.php(12) : eval()'d code on line 1

-> $arr_string = mysql_result($SQL,0,"zID");
   $arr = eval($arr_string);

Vielen Dank für eure Hilfe.

Gruss
Thomas

  1. Hi,

    warum speicherst du in deiner DB PHP-Befehle?

    ~dave

    1. Hoi

      warum speicherst du in deiner DB PHP-Befehle?

      der DB-inhalt wird aus einem komplexen CSV-File generiert. Jede Nummer im Array ist wiederum eine ID einer anderen Tabelle. Um nicht zuviele INSERTS zu generieren speichere ich der Array-Inhalt in der Tabelle. Dachte, könnte so ein explode umgehen... weiss jetzt allerdings nicht ob das überhaupt geht,-)

      Gruss
      Thomas

      1. @@Thomas:

        nuqneH

        der DB-inhalt wird aus einem komplexen CSV-File generiert. Jede Nummer im Array ist wiederum eine ID einer anderen Tabelle.

        Das beantwortet nicht im Geringsten die Frage

        warum speicherst du in deiner DB PHP-Befehle?

        Wenn du das schon so machen willst, dann nimm ein wenigstens halbwegs vernünftiges Format wie JSON:
        [1,2,4,6,8,9,10,11,12,13,14]

        Nun wäre es sicher unsinnig, hier einen JSON-Parser einzusetzen. Die eckigen Klammern wirst du mit Stringfunktionen loswerden, und dann hilft dir [link:http://de.php.net/manual/de/function.explode.php@title=explode()].

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Nun wäre es sicher unsinnig, hier einen JSON-Parser einzusetzen. Die eckigen Klammern wirst du mit Stringfunktionen loswerden, und dann hilft dir explode()

          Hab solange auf diesen Moment gewartet dich mal verbessern zu können :).
          *räusper*
          das "array(" und ")" bekommt er auch mit String Funktionen los.

          Mach mir diesen Moment nicht kaputt und antworte einfach gar nichts...

          Gruß
          glücklicher
          T-Rex

  2. Hi!

    Abgesehen von schon angesprochenen besseren Lösungen als Code in der Datenbank abzulegen:

    Parse error: syntax error, unexpected $end in /home/httpd/vhosts/letrona.ch/httpdocs/administration/produkte/test.php(12) : eval()'d code on line 1

    Der Code, den eval() auswerten soll, muss schon syntaktisch korrekt sein.

    $arr = eval($arr_string);

    So bekommst du kein Ergebnis in $arr. Das PHP-Handbuch zu eval() sagt, wie es geht.

    Lo!

  3. Hi,

    aus einer DB lese ich folgenden PHP-Befehl:
    array(1,2,4,6,8,9,10,11,12,13,14)

    Ohne es probiert zu haben; häng mal hinten noch ein ";" an.

    Grüße

    • Steffen
  4. Hello,

    aus einer DB lese ich folgenden PHP-Befehl:
    array(1,2,4,6,8,9,10,11,12,13,14)

    Nun möchte ich diesen als Array nutzen. Wie mache ich das?
    Mit eval() krieg ich n'e Fehlermeldung:
    Parse error: syntax error, unexpected $end in /home/httpd/vhosts/letrona.ch/httpdocs/administration/produkte/test.php(12) : eval()'d code on line 1

    -> $arr_string = mysql_result($SQL,0,"zID");
       $arr = eval($arr_string);

    $ok = eval('$_arr = ' . $arr_string . ';');
    oder
         $ok = eval("$_arr = $arr_string;");

    so müsste es klappen.

    http://de3.php.net/manual/en/function.eval.php

    Aber die Konstruktion ist halsbrecherisch. Ich würde nur die Daten in der DB abspeichern

    (1,2,4,6,8,9,10,11,12,13,14)

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. @@Tom:

      nuqneH

      Aber die Konstruktion ist halsbrecherisch.

      Ja, isse.

      Ich würde nur die Daten in der DB abspeichern
          (1,2,4,6,8,9,10,11,12,13,14)

      Wozu die runden Klammern? Dann könnte man sie auch ganz weglassen. Spart den Schritt, die Klammern zu entfernen.*

      Oder eben die für ein Array vorgesehenen eckigen verwenden, dann könnte man den String auch anders, d.h. wirklich als JSON verarbeiten.

      Qapla'

      * Richtung T-Rex: Natürlich könnte man 'array(' genauso gut entfernen wie '('. Mir gings auch erstmal um ein vernünftiges Format für die Daten. Aber das weißt du ja.

      Deshalb muss ich dir auch gar nicht antworten. ;-)

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hello Gunnar,

        *neidisch guck* (Ich kann leider zum Treffen nicht)

        Aber die Konstruktion ist halsbrecherisch.

        Ja, isse.

        Ich würde nur die Daten in der DB abspeichern
            (1,2,4,6,8,9,10,11,12,13,14)

        Wozu die runden Klammern? Dann könnte man sie auch ganz weglassen. Spart den Schritt, die Klammern zu entfernen.*

        Die sollten nur versinnbildlichen, dass in einer Datenbank ein Set gespeichert wird.
        Um das das dann wieder auszupacken, gibt es meistens fertige Funktionen.

        Oder eben die für ein Array vorgesehenen eckigen verwenden, dann könnte man den String auch anders, d.h. wirklich als JSON verarbeiten.

        Klar, kommt ja auch erstmal auf die Datenhaltung an, der man dieses Set zumuten will.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de