jenslm: Variablennamen und Wert abfragen?

Ist es möglich nicht nur den Wert sondern auch den Name einer Variable dynamisch zu gestalten?

Nehmen wir mal an das ist die Variable

Nehmen wir mal an das ist die MySQL-Tabelle zum ganzen:

id | var   |  value
--------------------
1  | color |  blue
       |        |
       |        |~~~php

$color = "blue";

  
also ungefähr so:  
$var = value  
  
lg, jens
  1. Hi!

    Ist es möglich nicht nur den Wert sondern auch den Name einer Variable dynamisch zu gestalten?

    Ja, PHP kennt variable Variablen. In den meisten Fällen stellt jedoch ein Array die bessere Alternative dar.

    Lo!

    1. Glaube das ist was ich gesucht habe.
      Wie mache ich das jetzt, wenn ich das ganze aus einer MySQL-Tabelle abfrage?

        
      <?php  
      $sql = "SELECT varname, varvalue  
      	FROM vars";  
        
      $result = mysql_query($sql, $database) or die(mysql_error());  
      $row = mysql_fetch_assoc($result);  
        
              //Funktioniert wohl nicht weil nur der erste Wert eingesetzt wird?  
              $arr = array("$row['varname']" => "$row['varvalue']");  
        
              echo $arr["foo"]; // bar  
              echo $arr[12];    // 1  
        
      ?>  
      
      

      Wie kann ich das Lösen?
      Lg, Jens

      1. Hi!

        Wie mache ich das jetzt, wenn ich das ganze aus einer MySQL-Tabelle abfrage?
        $result = mysql_query($sql, $database) or die(mysql_error());
        $row = mysql_fetch_assoc($result);

        So bekommst du nur einen Datensatz. Willst du nur diesen oder alle?

        //Funktioniert wohl nicht weil nur der erste Wert eingesetzt wird?
                $arr = array("$row['varname']" => "$row['varvalue']");

        Du willst $row['varname'] verwenden, dann nimm das doch einfach so und bau es nicht noch unnötigerweise mit "" in einen String ein.

        echo $arr["foo"]; // bar
                echo $arr[12];    // 1

        Ohne Abfrageschleife hast du genau ein Schlüssel-Wert-Paar in $arr stehen und nicht zwei.

        Wenn du also mehrere Datensätze erwartest und abfragen willst, kommt die übliche while-Schleife zum Einsatz. Davor solltest du $arr grundinitialisieren, so dass es auf alle Fälle ein Array ist, wenn auch ein leeres, wenn die Afrage keine Ergebnisse liefert:

        $arr = array();
          while ($row = mysql_fetch_assoc($result))
            $arr[$row['varname']] = $row['varvalue'];

        Die dritte Zeile erweitert das Array um je ein Schlüssel-Wert-Paar. Deine obige Zeile (wäre sie syntaktisch richtig notiert) würde stets ein neues Array in $arr ablegen. Und wenn es COnfig-Werte sind solltest du es vielleicht eher $config statt $arr nennen.

        Lo!

  2. Grüße,
    dafür nimmt man assoziative arrays, mit variablen variablennahmen ist der weg in die coderhölle gepflastert^^
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth