$$foo rückwärts

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

  • $$foo rückwärts

    Hoi mal wieder.

    Mal ne Frage, gibt es irgendeine Möglichkeit an den Namen einer Variable dran zu kommen?

    Bsp:
    PHP-Code:
    $foo "bar";

    $varname ominöseFunktion($foo);

    echo 
    $varname//ergibt "foo" 

  • #2
    Der Sinn der Frage ist mir nicht erkenntlich. Deshalb kann ich dafür auch keine Lösung finden.

    $$foo rückwärts wäre:
    Code:
    echo $foo
    den Namen einer Variablen kannst du ausserdem ausgeben mit:
    Code:
    echo substr ('$name',1);
    wobei ich das für total Schwachsinnig halte weil du dann auch einfach gleich
    Code:
    echo 'name';
    schreiben kannst.
    meine Seite mit vielen guten PHP Scripten :

    http://www.ilch.de

    Kommentar


    • #3
      nein, afaik gibt es dafür keine möglichkeit, weil der name "foo" im scope der ominösenFunktion() einfach unbekannt ist. übergeben wird nur der wert "des ersten argumentes".

      Kommentar


      • #4
        Danke penizilin. Hab auch überhaupt nix zu dem Thema gefunden. Eine Funktion wird es aus den dire genannten Gründen also überhaupt nicht sein können.....

        @ilch.
        nicht ganz richtig.

        Wenn "$foo = 'hallo'" dann "$$foo = $hallo"
        Ich sage deswegen rückwärts, weil ich den namen "foo" haben will, und wenn ich den wüßte, damit ich ihn mit 'echo "foo";' ausgeben könnte bräuchte ich eine solche Funktion nicht.
        $foo ist eine Variable die ganz Normal benutzt wird und die auch einen Wert hat, ich interessieren mich aber für den Namen der Variable - ähnlich key() für arrays.

        Kommentar


        • #5
          Allenfalls könntest du wat mit nem RegEx basteln:
          Die fragliche Datei einlesen. Dann sollte die "ominöse Fkt" den gesamten Inhalt durchsuchen nach dem = wert_der_var. Bei dieser Zeile dann mit einem RegEx (z.B.preg_match) nach $ gefolgt von jedem wortzeichen oder Zahl bis zum = heraussuchen. Bei diesem String das erste Zeichen abschneiden und mittels trim() allfällige Leerzeichen entfernen.
          Das funzt nur so lange gut wie du nicht mehrere Vars auf einer Zeile hast und nicht mehrere Vars denselben Wert haben.

          Wie gesagt, das ist ein Bastel und ich wüsste nicht wirklich einen praktischen Nutzen für so etwas.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Danke.
            Aber so ein gebastel will ich mir nicht antun. Dann bleibts so wies is.

            Ich hab diese Nette Funktion geschrieben, array2getstr() (siehe: http://www.php-resource.de/forum/sho...threadid=58584) und ich würde mir eben gerne die Übergabe des Namens sparen. Der definiert sich ja im Normalfall durch den Namen des übergebenen Arrays.

            Kommentar


            • #7
              Original geschrieben von jahlives
              Das funzt nur so lange gut wie du nicht mehrere Vars auf einer Zeile hast und nicht mehrere Vars denselben Wert haben.
              und so lange der wert der variablen nicht aus einer berechnung/operation stammt (oder lässt du dann auch noch eval drauf los ...?)
              und so lange ihr wert seite scriptanfang noch nicht verändert wurde.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Irgendwie ist es ja schon komisch, was du da überhaupt willst.

                Aber es gäbe IMHO einen Weg wenn man z.B. den Variablenamen zu einem bestimmten Wert suchen möchte - mit diesem Array wo alle Variablen drin sind (wie heißt es nochmal??) oder einfach get_defined_vars() nutzen und array_flip() - keine Ahnung ob du das von der Richtung aufgezogen brauchen kannst
                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                Schön - etwas Geschichte kann ja nicht schaden.
                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                Kommentar


                • #9
                  get_defined_vars() wird dir aber auch nur all die variablen ausgeben, die im gleichen gültigkeitsbereich existieren. und der name des parameters, mit dem die fkt. aufgerufen wurde, ist innerhalb der fkt. nicht bekannt.

                  Kommentar


                  • #10
                    ja klar, aber evtl. so:

                    PHP-Code:
                    $defined get_defined_vars();

                    echo 
                    ominöse_function($defined,$suchwert); 
                    Es macht ja sowieso keinen Sinn den Namen einer Variable ermitteln zu wollen, die man übergibt. Die 'Rückwärtssuche' wär evtl. vielleicht brauchbar - obwohl ich persönlich noch nie in die Situation gekommen bin sowas zu brauchen - denke eher, dass es hier generell an der Struktur des Scripts mangelt, wenn sowas gebraucht wird.
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar


                    • #11
                      Danke euch für eure Antworten.

                      An der Struktur des Scripts mangelt es denke ich nicht, ich kann ja den Namen den der Array im GetSring haben soll mit übergeben, da ich ihn ja weiß.

                      Es geht auch nicht darum, den Namen der Variable in der Funktion zu ermitelln, das kann ruhig ausserhalb passieren.

                      So zum Beispiel: funktion_die_irgendwas_macht( besorg_namen($foo), $foo);

                      Mir ging es nur darum ob es überhaupt geht. Weil der name des Arrays ja feststeht ($foo), somit wäre es doch schön, wenn ich in dem aufgerufenen Script (in meinem Fall eine XML Schnittstelle) mit $_GET['foo'] da dran käme.
                      Und um das ganze möglichst flexibel zu halten dachte ich mir ich ermittel den Namen des Arrays anstatt ihn zu übergeben. Ähnlich key() bei Arrays.

                      Die Idee mit get_defined_vars() werd ich mal prüfen, allerdings hab ich ja kein Suchwort. Wenn ich das habe, kann ich der array2getstr Funktion ja auch den Namen mitgeben.

                      Ich glaub es handelt sich um ein kleines Henne-Ei-Problem.

                      Aber verstanden was ich will habt ihr, oder?

                      Ansonsten fragt nochmal, kann ja sein das es doch eine Lösung gibt.

                      Kommentar


                      • #12
                        Grad ne Idee bekommen:

                        PHP-Code:
                        $the_vars get_defined_vars();
                        while(
                        $var pos($the_vars)){
                            echo 
                        key($the_vars)."  |  ";
                            if(!
                        array_diff($var$arr_input)){
                                echo 
                        "found: ".key($the_vars)."\n";
                            }else{
                                echo 
                        "no\n";
                            }

                            
                        next($the_vars);

                        So irgendwie, könnte das gehn?
                        Versteht das alles nicht falsch, es geht mir nicht dadrum so zu programmieren, momentan will ich hauptsächlich nur wissen ob das gehen würde.

                        Kommentar

                        Lädt...
                        X