array wert zu variablen name

seppausbayern

Mitglied
soo.. nächster schritt im script, nächstes problem *g*
ich habe also eine variable, bsp.:
PHP:
$rasse="chiwawa"
(jaja, ist falsch geschrieben, ich weiss =:) )

so
nun möchte ich aber überprüfen, ob eine variable mit dem
wert von $rasse existiert.
mit
PHP:
!empty($rasse)
bekomme ich ja raus ob die variable rasse existiert, ich will aber
wissen, ob die variable "chiwawa" existiert.
also im prinzip muss ich den wert von $rasse in eine neue variable umwandeln,
kann das aber nicht per hand tun, da der inhalt von $rasse variiert.
simpel gesagt: ich muss wissen, ob eine variable mit dem namen, der gleich dem wert von $rasse ist, exisitert.
$rasse könnte genausogut $rasse="mineralwasser" sein, ich kann also
keine konstanten verwenden.
help :D
 
PHP:
$rasse = 'chiwawa';
$$rasse = 'ich bin gesetzt';

echo $rasse;
echo '<br />';
echo $chiwawa;
ergibt:
chiwawa
ich bin gesetzt


Ist das was du suchtest?
 
Oder wenn Du verschiedene Rassen in ein Array packst:

$rasse = array ("Dackel", "Schaeferhund", "Chiwawa");

if (in_array ("Chiwawa", $rasse)) {
print "Der Chiwawa bellt!";
}
 
Hallo,

jetzt dachte ich, dass ich damit ($$variable) die Lösung gefunden hatte, scheint aber noch ein bischen komplizierter zu werden.

Wieso funktioniert

$testvar = 'Inhalt';
$varname = 'testvar';
echo $$varname;

(gibt "Inhalt" aus), aber

$variablenname[feldname] = "Testing";
$auswahl = 'feldname';
$parameter = 'variablenname';
echo $$parameter[$auswahl] ;

gar nichts? Weiss jemand Rat?

Schöne Grüsse,
Achim
 
Das liegt daran, dass PHP nicht weiss, ob nun $$parameter, oder $parameter das Array ist.

Du musst dem PHP Interpreter also sagen, dass du als Variablenname nur den Wert von $parameter und nicht den von $parameter[$auswahl], welcher ja sowieso nicht existiert, benutzen willst.
Zur Lösung des Problems dienen die geschweiften Klammern, welche um die Variable gestetzt werden müssen, deren Wert benutzt werden soll (eigentlich nur bei solchen Fällen mit Arrays):
PHP:
echo ${$parameter}[$auswahl] ;
andernfalls würde PHP es defaultmäßig so interpretieren:
PHP:
echo ${$parameter[$auswahl]} ;

Ps: Um zu prüfen, ob Variablen exisitieren, lieber isset benutzen.
Pps: Auch ganz interresant: Die Seite vom PHP-Manual über die variablen Variablen:
http://de2.php.net/manual/en/language.variables.variable.php
 
Zuletzt bearbeitet von einem Moderator:
Hallo Nuinmundo,


vielen Dank, das funktioniert einwandfrei.

> Ps: Um zu prüfen, ob Variablen exisitieren, lieber isset benutzen.

Ja, aber ich brauchte auch den Wert der Variablen: Sinn und Zweck der Aktion ist, für die Bearbeitung eines Artikels (Tabelle A) Werte aus einer Vorgabeliste (Tabelle B) zu holen, und bei gewähltem Wert diese Option auch zu markieren.

Wenn es jemand gebrauchen kann, hier ist der komplette Code:

PHP:
// Tabellenname A
$variable = "artikel"; 
// Feldname in Tabelle A, 
// gleichzeitig Tabellenname B _und_ Feldname in Tabelle B
$auswahl = "Gruppe";

// folgende Zeile nur dann, 
// wenn Tabellenname (B) nur aus Kleinbuchstaben 
$tablename = strtolower($auswahl);

// Auswahlfeld beginnen
echo "<select name=$auswahl size=1>";

// Daten holen
$sql_auswahl = "SELECT * FROM $tablename";
$result_auswahl = mysql_query($sql_auswahl);
while ($auswahlliste = mysql_fetch_array($result_auswahl)) {
 // Auswahlfeld ausgeben
 echo "<option ";
 // wenn bereits gewählt, vorwählen
 if (${$variable}[$auswahl] == $auswahlliste[$auswahl]) { echo " selected ";}
 echo "value=$auswahlliste[$auswahl]>$auswahlliste[$auswahl]</option>";
}

// Auswahlfeld abschliessen
echo "</select>";

Ich hoffe, das kann jemand gebrauchen? Viel Spass damit, bei Rückfragen bitte Mail !

Schöne Grüsse,
Achim
 
Zuletzt bearbeitet:
Zurück