卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章11201本站已运行3223

PHP可变变量

“可变变量”这一概念就是 PHP 的特色语法,在其它的编程语言中一般没有这种骚操作……

通俗的说道,可变变量就是“变量的变量”,一个变量的名,又就是一个变量 。描述出来很拖,下面轻易看代码!

气门变量的使用

要定义一个可变变量很简单,只需在通常的变量前面再加上一个美元符号"$"

<?php  
$hello= '你好';  
$a= 'hello';  
echo$$a;  
?>

运行上面的代码,输出的就是 “你好”。为什么可以输出 “你好” 呢,我们去逐句解析。

第一句定义了一个普通的变量 $hello ,值 “你好”;

第二句也定义了一个普通闪崩 $a ,值为 “hello”;

第三句就用上了气门变量 $$a ,因为之前定义的 $a 的值 “hello”,所以 $$a 就相当于 $hello,所以最终输出了 “你好”……

使我们再来看下一个例子……

<?php  
$a= 'hello';  
$$a= 'world';  
echo"$a ${$a}";  
?>

以上代码中,$a 的内容是 “hello”,$$a 的内容是 “word”。同时,因为 $$a 是一个气门变量,所以它等效于 $hello。因此上述代码也可以译成

<?php  
$a= 'hello';  
$$a= 'world';  
echo"$a $hello";  
?>

它们输出的内容都是 “hello world”

可变变量与数组

要将可变变量用作数组,必须化解一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器须要知道就是想 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并抽出该变量中索引为 [1] 的值。

解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。

可变变量与类

类的属性也可以通过气门属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则可以在本地范围去解析 $bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也就是一样。

也可采用花括号来给属性名清晰定界。最有价值就是在属性坐落于数组中,或者属性名包含存有多个部分或者属性名包含有非法字符时(例如源自 json_decode() 或 SimpleXML)。

<?php  
// 气门属性示例
classfoo {  
var$bar= 'I am bar.';  
var$arr= array('I am A.', 'I am B.', 'I am C.');  
var$r= 'I am r.';  
}  
$foo= newfoo();  
$bar= 'bar';  
$baz= array('foo', 'bar', 'baz', 'quux');  
echo$foo->$bar. "n";  
echo$foo->$baz[1] . "n";  
$start= 'b';  
$end= 'ar';  
echo$foo->{$start. $end} . "n";  
$arr= 'arr';  
echo$foo->$arr[1] . "n";  
echo$foo->{$arr}[1] . "n";  
?>

玩坏了的可变变量

在一个普通的变量前边提一个 “$” 它就变为了气门变量,那么要是在可变变量的前面再提一个 “$” 呢?再提两个,加 N 个呢? 统统没问题……

<?php  
$Bar= "a";  
$Foo= "Bar";  
$World= "Foo";  
$Hello= "World";  
$a= "Hello";  
$a; // = Hello
$$a; // => $Hello = World
$$$a; // => $$Hello => $World = Foo
$$$$a; // => $$$Hello => $$World = $Foo = Bar
$$$$$a; // => $$$$Hello => $$$World = $$Foo = $Bar = a
// 以下相等于步入了循环...
$$$$$$a; // = Hello
$$$$$$$a; // = World
// 只要你愿,你可以在前面提无数个美元符……
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$a;  
// Ps:据说搞 PHP 开发的都不差钱,因为存有很多的 $ ... ...
?>

卓越飞翔博客
上一篇: PHP利用百度识图接口把百度当图床
下一篇: WordPress固定链接404的解决办法
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏