Heim  >  Artikel  >  Backend-Entwicklung  >  PHP的可变变量名_PHP教程

PHP的可变变量名_PHP教程

WBOY
WBOYOriginal
2016-07-21 14:51:53903Durchsuche

有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名 :

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li><span>$<span class="attribute">a</span><span> = </span><span class="attribute-value">'hello'</span><span>; </span></span></li>
<li class="alt"><span><span class="tag">?></span><span> </span></span></li>
</ol>

可变变量名指的是使用一个变量的值作为这个变量的名称。在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样。

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li><span>$$<span class="attribute">a</span><span> = </span><span class="attribute-value">'world'</span><span>; </span></span></li>
<li class="alt"><span><span class="tag">?></span><span> </span></span></li>
</ol>

通过上面的两个语句,有两个变量被定义:变量$a,装的内容是”hello” 以及变量$hello,装的内容是 “world”。 于是,下面的语言:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li><span>echo "$a ${$a}"; </span></li>
<li class="alt"><span><span class="tag">?></span><span> </span></span></li>
</ol>

跟下面的语句的输出完全一致:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li><span>echo "$a $hello"; </span></li>
<li class="alt"><span><span class="tag">?></span><span> </span></span></li>
</ol>

它们都输出:hello world。

为 了使用数组的可变变量名,你需要解决一个歧义问题。就是,如果你写$$a[1],解析器需要明白究竟你的意思是要把$a[1]当成一个变量,还是要 把$$a当成变量、[1]指的是这个变量的索引。解决这个歧义问题的语法是:第一种情况使用${$a[1]},第二种情况使用${$a}[1]。

类 属性也可以通过可变属性名来访问。可变属性名从产生调用所在的变量的访问范围内获取。例如,如果你的表达式是这样的:$foo->$bar,那么运 行时将会在本地变量范围内寻找变量$bar,它的值将会做为$foo对象的一个属性名。如果$bar是个数组也可以使用。

例1 可变变量名

<ol class="dp-xml">
<li class="alt"><span><span class="tag"></span><span class="tag-name">php</span><span> </span></span></li>
<li><span>class foo { </span></li>
<li class="alt"><span>    var $<span class="attribute">bar</span><span> = </span><span class="attribute-value">'I am bar.'</span><span>; </span></span></li>
<li><span>} </span></li>
<li class="alt"><span> </span></li>
<li><span>$<span class="attribute">foo</span><span> = </span><span class="attribute-value">new</span><span> foo(); </span></span></li>
<li class="alt"><span>$<span class="attribute">bar</span><span> = </span><span class="attribute-value">'bar'</span><span>; </span></span></li>
<li><span>$<span class="attribute">baz</span><span> = </span><span class="attribute-value">array</span><span>('foo', 'bar', 'baz', 'quux'); </span></span></li>
<li class="alt"><span>echo $foo-<span class="tag">></span><span>$bar . "n"; </span></span></li>
<li><span>echo $foo-<span class="tag">></span><span>$baz[1] . "n"; </span></span></li>
<li class="alt"><span><span class="tag">?></span><span> </span></span></li>
</ol>

上面的例子将会输出下面的结果:

I am bar.

I am bar.

警告

请注意,可变变量名不能用于PHP函数和类里的超级全局数组变量上。变量$this也是一个不能动态取名的特殊变量。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/371672.htmlTechArticle有时候可变的变量名会给编程带来很大的方便。也就是说变量名可以被动态的命名和使用。通常变量通过下面这样的语句来命名 : ? php $...
Stellungnahme:
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