Hans Gustav: $$val

Hi,

<?php
$string = "hallo";
$val = $$string;

print $val;
?>

sollte ich als ausgabe nicht "string" bekommen, denn ich bekomme "" also nix, ... nada,... eine weisse seite.

Stehe ich auf dem Schlauch?

Wie ging das nochmal?

Hans Gustav

  1. ein $ vor "string" zuviel.
    Du versuchst da dynamische Variablennamen zu vergeben.
    Umgesetzt lautet deine 2. Zeile $val=$hallo, und wenn $hallo leer ist oder nicht existiert, kommt am Ende auch nichts raus.

    1. achso nier

      wie bekomme ich es dann hin das mir der variablen name ohne $ ausgegeben wird wenn ich ein array und eine schleife habe:

      <?php
      $VAR1 = "test ahllo";
      $VAR2 = "test";
      $VAR3 = "ahllo";

      $strings[] = $VAR1;
      $strings[] = $VAR2;
      $strings[] = $VAR3;

      for ($i=0; $i <= count($strings)-1; $i++)
      {
       $string = $strings[$i];
       print "Der inhalt von NAME_DES_STRING ist $string<br>";
      }
      ?>

      ----------------------

      Ausgabe:

      Der inhalt von VAR1 ist test ahllo
      Der inhalt von VAR2 ist test
      Der inhalt von VAR3 ist ahllo

      ----------------------

      Wie bekomme ich das hin?

      1. Aha!

        Voila:

        <?php
        $VAR1 = "test ahllo";
        $VAR2 = "test";
        $VAR3 = "ahllo";

        $strings[] = $VAR1;
        $strings[] = $VAR2;
        $strings[] = $VAR3;

        for ($i=0; $i <= count($strings)-1; $i++)
        {
         $string = $strings[$i];
         print "Der Inhalt von $VAR".$i+1." ist ".$string."<br />";
        }
        ?>

        Ich denke, der Knackpunkt war, dass Du das $-Zeichen bei der Ausgabe nicht escaped hast.

        1. äh sch... war n schlechtesd beispiel abgesehen davon das es eh nicht geht:

          Parse error: parse error in /usr/local/httpd/htdocs/rwzadm/menu/userverw/woelk/test.php on line 13

          das ist der print teil!

          Neues Beispiel:

          <?php
          $VAR1 = "test ahllo";
          $VAR2 = "test";
          $VAR3 = "ahllo";

          $strings[] = $VARIABLE;
          $strings[] = $VAR2;
          $strings[] = $HALLO;

          for ($i=0; $i <= count($strings)-1; $i++)
          {
           $string = $strings[$i];
           print "Der Inhalt von $VAR".$i+1." ist ".$string."<br />";
          }
          ?>

          geht das denn jetzt überhaupt noch??

          1. Jetzt hab ich verstanden...
            Nein, so wie Du Dir das vorstellst ist das denke ich nicht möglich.
            Warum da ein Parse-Error kommt verstehe ich allerdings jetzt nicht.

      2. Hi!


        Ausgabe:

        Der inhalt von VAR1 ist test ahllo
        Der inhalt von VAR2 ist test
        Der inhalt von VAR3 ist ahllo


        <?php
        $VAR1 = "test ahllo";
        $VAR2 = "test";
        $VAR3 = "ahllo";

        for ($i=1; $i <= 3; $i++) {
          echo "Der inhalt von VAR".$i." ist ".${"VAR".$i}."<br>";
        }
        ?>

        Wobei sich mi der Sinn nicht wirklich erschließt. Wenn Du das noch ine einen Array schreiben wilst, dann belege den Key mit dem alten Variablenamen, sonst ist die Information verloren, es sei Nummern(Array-Key und $VARx) steigen gleich schnell, dann kannst Du das auch noch machen, aber wenn Du mich fragst ist das allgemein eher was für Arrays, wozu brauchst Du denn vorher noch die Variablen, und vor allem dessen Namen? Verwende Array Keys und Values.

        Grüße
        Andreas

  2. Hi!

    <?php
    $string = "hallo";
    $val = $$string;

    print $val;
    ?>

    sollte ich als ausgabe nicht "string" bekommen, denn ich bekomme "" also nix, ... nada,... eine weisse seite.

    Nein, was hätte das für einen Sinn?

    Siehe im Manual ( http://de3.php.net/manual/de/language.variables.variable.php) nach _was_ Du da machst.

    Grüße
    Andreas