Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit eval + Array

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit eval + Array

    Hi, ich rufe via Eval eine Funktion auf, an welche ich ein Array übergebe:

    eval('show' . $function . '(' . $data . ');');

    doch leider klappt dies nicht und ich verstehe nicht, wo das Problem liegt:


    Parse error: syntax error, unexpected T_ARRAY_CAST in /www/htdocs/xy/_app/helpers/ContentHandler.php(53) : eval()'d code on line 1

    Hat jemand eine Idee?


  • #2
    Zunächst wird hier 'show' . $function . '(' . $data . ');' als String ausgewertet, wenn $data allerdings ein Array ist, ist die String-Repräsentation "Array". Also passiert folgendes (sei $function = 'Foo'):

    eval('showFoo(Array);');

    showFoo(Array); ist keine korrekte Syntax, daher der Parse Error ("(Array)" ist hier T_ARRAY_CAST)

    Für diesen Zweck gibt es [man]var_export[/man], korrekt ist damit:

    PHP-Code:
    eval('show' $function '(' var_export($data) . ');'); 
    @fschmengler - @fschmengler - @schmengler
    PHP Blog - Magento Entwicklung - CSS Ribbon Generator

    Kommentar


    • #3
      Wieso nutzt du eval()?
      http://hallophp.de

      Kommentar


      • #4
        Point taken. Für den Zweck gibt es variable Funktionsnamen oder [man]call_user_func[/man].
        @fschmengler - @fschmengler - @schmengler
        PHP Blog - Magento Entwicklung - CSS Ribbon Generator

        Kommentar


        • #5
          Wenn ich das var_export drumbaue wird das Array direkt ausgegeben? Ich will es aber in meiner Funktion verwenden können. Mit call_user_func_array kommt irgendwie immer ne Zahl raus mit der ich nichts anfangen kann, wieso nicht die Daten? ^

          Kommentar


          • #6
            Zitat von Rita.E Beitrag anzeigen
            Wenn ich das var_export drumbaue wird das Array direkt ausgegeben?
            Um das zu beeinflussen, gibt's den zweiten Parameter.

            Mit call_user_func_array kommt irgendwie immer ne Zahl raus mit der ich nichts anfangen kann, wieso nicht die Daten? ^
            Du nimmst nicht wirklich an, dass wir hellsehen können, was du falsch machst ...?

            Kommentar


            • #7
              [MAN]call_user_func_array[/MAN]
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar

              Lädt...
              X