PHP手册之可变变量

前言

PHP手册系列文章,会挑选一些手册中有意思的评论进行翻译
手册目录: 语言参考---变量---可变变量
参考详情

评论

  1. php允许你添加很多的$符号来使用可变变量
$Bar = "a";
$Foo = "Bar";
$World = "Foo";
$Hello = "World";
$a = "Hello";

echo $a; //Returns Hello
echo $$a; //Returns World
echo $$$a; //Returns Foo
echo $$$$a; //Returns Bar
echo $$$$$a; //Returns a

echo $$$$$$a; //Returns Hello
echo $$$$$$$a; //Returns World
  1. php可以通过可变变量调用类方法
class Foo {
    public function hello() {
        echo 'Hello world!';
    }
}
$my_foo = 'Foo';
$a = new $my_foo();
$a->hello(); //prints 'Hello world!'

同时也可以通过可变变量调用类静态方法

class Foo {
    public static function hello() {
        echo 'Hello world!';
    }
}
$my_foo = 'Foo';
$my_foo::hello(); //prints 'Hello world!'
  1. 定界符{}对于使用可变变量是很重要的
$tab = array("one", "two", "three") ;
$a = "tab" ;
$$a[] ="four" ; // <==== fatal error
print_r($tab) ;

会报错,这并不是一个bug,而是书写的错误,对于$$a[]我们需要使用定界符,写程${$a}[]即可正确执行

  1. 你不可以像$variable-name= 'name' 这样命名一个变量,但是你可以通过可变变量做到
$a = 'variable-name';
$$a = 'hello';
echo $$a; //output hello
  1. 可能有些情景,你想要使用可变变量来动态引用超全局变量,但是是否能成功有时可能会因为当时的访问范围的变化而变化
$_POST['asdf'] = 'something';
function test() {
    // NULL -- not what initially expected
    $string = '_POST';
    var_dump(${$string});

    // Works as expected
    var_dump(${'_POST'});

    // Works as expected
    global ${$string};
    var_dump(${$string});

}
// Works as expected
$string = '_POST';
var_dump(${$string});
test();

除了test方法中的第一个引用失败,其他均成功

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,324评论 4赞 97
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,386评论 0赞 38
  • 今天是考六级的日子,我依旧在床上,恍恍惚惚没有清醒,大概这一年都是这样的恍恍惚惚过去了。我有的时候恨这样的...
    源木君阅读 259评论 0赞 1
  • “人生是一场马拉松,跑赢的是自己”-同桌 The best compliment is when 最好的赞美是,是...
    奔跑的鱼7阅读 194评论 0赞 1
  • 四海墨客 同聚德州 尽情挥毫 写意抒情 珍玩网杯 圆梦先行 南北画友 共献丹青 一张长卷 情意浓浓 凝结赤子 爱国...
    张令然阅读 278评论 0赞 0

友情链接更多精彩内容