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) . ');'); 
    [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
    [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

    Kommentar


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

      Kommentar


      • #4
        Point taken. Für den Zweck gibt es variable Funktionsnamen oder [man]call_user_func[/man].
        [IMG]https://g.twimg.com/twitter-bird-16x16.png[/IMG][URL="https://twitter.com/fschmengler"]@fschmengler[/URL] - [IMG]https://i.stack.imgur.com/qh235.png[/IMG][URL="https://stackoverflow.com/users/664108/fschmengler"]@fschmengler[/URL] - [IMG]http://i.imgur.com/ZEqflLv.png[/IMG] [URL="https://github.com/schmengler/"]@schmengler[/URL]
        [URL="http://www.schmengler-se.de/"]PHP Blog[/URL] - [URL="http://www.schmengler-se.de/magento-entwicklung/"]Magento Entwicklung[/URL] - [URL="http://www.css3d.net/"]CSS Ribbon Generator[/URL]

        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 ...?
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              [MAN]call_user_func_array[/MAN]
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar

              Lädt...
              X