PHP-Variablenvariablen

伊谢尔伦
Freigeben: 2016-11-24 13:45:09
Original
1173 Leute haben es durchsucht

Manchmal ist es praktisch, veränderbare Variablennamen zu verwenden. Das heißt, der Variablenname einer Variablen kann dynamisch festgelegt und verwendet werden. Eine gewöhnliche Variable wird durch Deklaration festgelegt, zum Beispiel:

<?php
    $a = &#39;hello&#39;;
?>
Nach dem Login kopieren

Eine variable Variable erhält den Wert einer gewöhnlichen Variablen als Variablennamen der Variablenvariablen. Im obigen Beispiel kann „Hallo“ als Variablenvariable verwendet werden, nachdem zwei Dollarzeichen ($) verwendet wurden. Beispiel:

<?php
    $a = &#39;world&#39;;
?>
Nach dem Login kopieren

Zu diesem Zeitpunkt sind zwei Variablen definiert: Der Inhalt von $a ist „Hallo“ und der Inhalt von $hello ist „Welt“. Daher gibt die folgende Anweisung:

<?php
    echo "$a ${$a}";
?>
Nach dem Login kopieren

genau das gleiche Ergebnis aus wie die folgende Anweisung:

<?php
    echo "$a $hello";
?>
Nach dem Login kopieren

Beide geben Folgendes aus: Hallo Welt.

Um veränderliche Variablen mit Arrays zu verwenden, muss eine Mehrdeutigkeit behoben werden. Beim Schreiben von $$a[1] muss der Parser also wissen, ob er $a[1] als Variable oder $$a als Variable möchte und die Variable mit dem Indexwert [1] extrahiert. Die Syntax zur Lösung dieses Problems besteht darin, ${$a[1]} für den ersten Fall und ${$a}[1] für den zweiten Fall zu verwenden.

Auf Klasseneigenschaften kann auch über veränderbare Eigenschaftsnamen zugegriffen werden. Veränderbare Eigenschaftsnamen werden im Rahmen des Aufrufs aufgelöst. Beispielsweise wird für den Ausdruck $foo->$bar $bar im lokalen Bereich analysiert und sein Wert als Eigenschaftsname von $foo verwendet. Das Gleiche gilt für $bar, wenn es sich um eine Array-Zelle handelt.

Sie können auch geschweifte Klammern verwenden, um Attributnamen klar abzugrenzen. Am nützlichsten, wenn sich die Eigenschaft in einem Array befindet oder wenn der Eigenschaftsname mehrere Teile enthält oder wenn der Eigenschaftsname unzulässige Zeichen enthält (z. B. von json_decode() oder SimpleXML).

Beispiel Nr. 1 Beispiel für ein Variablenattribut

<?php
class foo {
    var $bar = &#39;I am bar.&#39;;
    var $arr = array(&#39;I am A.&#39;, &#39;I am B.&#39;, &#39;I am C.&#39;);
    var $r = &#39;I am r.&#39;;
}
$foo = new foo();
$bar = &#39;bar&#39;;
$baz = array(&#39;foo&#39;, &#39;bar&#39;, &#39;baz&#39;, &#39;quux&#39;);
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";
$start = &#39;b&#39;;
$end = &#39;ar&#39;;
echo $foo->{$start . $end} . "\n";
$arr = &#39;arr&#39;;
echo $foo->$arr[1] . "\n";
echo $foo->{$arr}[1] . "\n";
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

I am bar.
I am bar.
I am bar.
I am r.
I am B.
Nach dem Login kopieren

Warnung

Beachten Sie, dass in PHP superglobale Variablen funktionieren können nicht als veränderliche Variablen in Klassenmethoden verwendet werden. Die Variable $this ist ebenfalls eine spezielle Variable und kann nicht dynamisch referenziert werden.


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!