Denken Sie daran, dass Sie das auch mit mehr $s tun können
<?php
$var1 = 'var2';
$var2 = 'nameOfVariable';
$nameOfVariable = 'The value I want!';
echo $$$var1;
?>
Und Sie können geschweifte Klammern verwenden
<?php
$var1 = 'nameOf';
$var2 = 'TheVariable';
$nameOfTheVariable = 'Another value I want!';
echo ${$var1 . $var2}; // Use concatenation to generate the variable name and then access it //
?>
Das ist wirklich schlechte Praxis und mit richtigem Code sollten Sie diese Mutation von Code nicht benötigen.
Geben Sie auch nicht direkt $_POST/$_GET oder $_REQUEST-Inhalte aus, ohne htmlentities() darum herum zu verwenden, da Ihre Website anfällig für Cross-Site-Scripting und andere Injection-Angriffe sein könnte.
Wenn Sie diese Vorlage nun füllen möchten, könnten Sie … verwenden
<?php
function showFilledTemplate($vars)
{
foreach($vars as $varName => $value)
{
$$varName = $value;
}
include "Template.php";
}
$myVars = array("header"=>"I am the header", "content"=>"The content is here", "footer"=>"And finally the footer itself");
showFilledTemplate($myVars);
?>
Die Variablen $header, $content und $footer, die von Template.php aufgerufen werden, werden durch die foreach-Schleife bereitgestellt. Wenn die Template.php eingebunden wird, sind die in der foreach-Schleife „erstellten“ Variablen immer noch zugänglich und daher ist die HTML-Ausgabe …
// dynamic title
<div id="header"> I am the header <div/>
// dynamic content
<div id="content"> The content is here <div/>
// dynamic footer
<div id="footer"> And finally the footer itself <div/>
Obwohl ich denke, dass dies irgendwie „schmutziger“ Code ist, ist es ein Beispiel für die Verwendung von Variablenvariablen.
Entschuldigung für den schlechten Code! Natürlich ist es </div> und nicht <div/> und ich habe die HTML-Sonderentitäten für den Zuweisungsoperator => vermasselt. Ich schätze, der Tipp zum Posten, alle Kleiner-als-Zeichen in HTML-Sonderentitäten umzuwandeln, galt nur für Kleiner-als-Zeichen. Mein Fehler!
Ich glaube nicht, dass dieses Stück Code in irgendeiner Weise nützlich wäre. Beim Programmieren in PhP oder jeder anderen Sprache sollten Sie eines bedenken: Ihr Code sollte von anderen lesbar sein. Natürlich sollte der Inhalt Ihres Codes, die Werte der Variablen, das nicht sein.
Aber wenn Sie einen solchen Schnipsel verwenden, nehmen Sie ihm die Lesbarkeit. Daher stimme ich perpleXa zu, dass dies eine schlechte Praxis ist. Sorry.
Denken Sie daran, dass Sie das auch mit mehr $s tun können
Und Sie können geschweifte Klammern verwenden
Denken Sie daran, dass Sie das auch mit mehr $s tun können
Und Sie können geschweifte Klammern verwenden
nein
Wow! Das wusste ich gar nicht. Könnte in Zukunft ein sehr wertvolles Werkzeug sein.
Wie? ^
Ich möchte eine Frage stellen: Wie zeige ich eine Variable inmitten von Text an?
Zum Beispiel habe ich
“var1 = $_POST[‘username’];”
Ich möchte es so ähnlich anzeigen lassen:
„Hallo [username]“.
Wie mache ich das?
Ich habe das versucht, aber es hat nicht funktioniert:
„echo Hello $var1;“
Bitte helfen Sie mir dabei.
$var1=$_POST’username’];
echo „Hallo [“ . $var1 . “]“;
Versuchen Sie es so
$var=$_POST[‘username’];
echo ‚Hallo[‘.$var.’]‘;
Wenn Sie Variablen aus einem Array erstellen müssen, gibt es zwei Möglichkeiten.
Die erste verwendet php extract()
Die zweite Möglichkeit, die Ihnen mehr Kontrolle gibt, ist php list()
Das ist wirklich schlechte Praxis und mit richtigem Code sollten Sie diese Mutation von Code nicht benötigen.
Geben Sie auch nicht direkt $_POST/$_GET oder $_REQUEST-Inhalte aus, ohne htmlentities() darum herum zu verwenden, da Ihre Website anfällig für Cross-Site-Scripting und andere Injection-Angriffe sein könnte.
Hm, ich bin wahrscheinlich nur ein bisschen begriffsstutzig, aber könnten Sie ein Beispiel geben, wann diese Technik nützlich wäre?
Hey Chris!
Erst gestern habe ich das in einem MVC-Tutorial gefunden. Dort gab es die „Template.php“ mit dem Inhalt …. .
Wenn Sie diese Vorlage nun füllen möchten, könnten Sie … verwenden
Die Variablen
$header,$contentund$footer, die von Template.php aufgerufen werden, werden durch die foreach-Schleife bereitgestellt. Wenn die Template.php eingebunden wird, sind die in der foreach-Schleife „erstellten“ Variablen immer noch zugänglich und daher ist die HTML-Ausgabe …Obwohl ich denke, dass dies irgendwie „schmutziger“ Code ist, ist es ein Beispiel für die Verwendung von Variablenvariablen.
Entschuldigung für den schlechten Code! Natürlich ist es
</div>und nicht<div/>und ich habe die HTML-Sonderentitäten für den Zuweisungsoperator => vermasselt.Ich schätze, der Tipp zum Posten, alle Kleiner-als-Zeichen in HTML-Sonderentitäten umzuwandeln, galt nur für Kleiner-als-Zeichen. Mein Fehler!
Ich glaube nicht, dass dieses Stück Code in irgendeiner Weise nützlich wäre. Beim Programmieren in PhP oder jeder anderen Sprache sollten Sie eines bedenken: Ihr Code sollte von anderen lesbar sein.
Natürlich sollte der Inhalt Ihres Codes, die Werte der Variablen, das nicht sein.
Aber wenn Sie einen solchen Schnipsel verwenden, nehmen Sie ihm die Lesbarkeit. Daher stimme ich perpleXa zu, dass dies eine schlechte Praxis ist. Sorry.