Sven Rautenberg: per ${$string} auf superglobale

Beitrag lesen

Moin!

Mir gelingt es nicht per ${$variable} auf das superglobale Request-Array zuzugreifen.

Warum willst du das über diesen Umweg machen, und nicht direkt?

Mit ${"variable"} klappt dies aber. Ich bin ein wenig confused darüber, kann mir das vlt. mal jmd erklären? Ich arbeite schon ne ganze Weile mit diesen ${}-Konstrukt und stelle fest das ich nichtmal weiss wie man sowas überhaupt bezeichnet :P.

Das ist eine "variable Variable". Die geschweiften Klammern sind übrigens nicht notwendig, $$variable funktioniert auch.

ALLERDINGS: Die Anwendung dieses Konstrukts ist als extrem negativ zu bewerten. Es gibt manche Situationen, in denen man sowas tatsächlich benötigt - aber die sind wirklich EXTREM SELTEN! Also verabschiede dich am besten davon, denn es macht deinen Code extrem unübersichtlich und fehleranfällig. Du müßtest extrem sorgfältig den Variableninhalt von $string prüfen, ob er ausschließlich erwünschte Inhalte enthält - denn über das Konstrukt der variablen Variable kann man ja auf jede existierende Variable zugreifen, wenn man nur deren Namen in $string einschmuggeln kann.

Also bitte nicht machen!

<code>

Hehe, in diesem Forum hat die Codefunktion eckige Klammern, genauso wie die Links. Mit dem Attribut "lang" kann man dann noch Syntaxhighlighting für eine Sprache wählen. Siehe </hilfe/bedienung.htm#syntax-highlighting>

  

>  <?php  
>  $string = "_REQUEST";  
>  echo "["; var_dump($string); echo "]<br>";  
>  if (isset(${$string})) {  
>    echo "Zugriff mit Variante A:<br>";  
>    print_r(${$string});  
>    echo "<br><br>";  
>  }  
>   
>  echo "["; var_dump("_REQUEST"); echo "]<br>";  
>  if (isset(${"_REQUEST"})) {  
>    echo "Zugriff mit Variante B:<br>";  
>    print_r(${"_REQUEST"});  
>    echo "<br><br>";  
>  }  
>  ?>  

- Sven Rautenberg

--
My sssignature, my preciousssss!