PHP 中的变量变量

variable-variables in PHP

提问人:Johnny 提问时间:9/5/2010 最后编辑:BoltClockJohnny 更新时间:10/23/2010 访问量:249

问:

我知道你可以做:而且,这些东西中的每一个都叫什么?$hash('foo')$$foo$bar[$foo]

php 变量

评论


答:

18赞 BoltClock 9/5/2010 #1
  • $hash('foo') 是一个变量函数。
    可以包含具有函数名称的字符串或匿名函数。
    $hash

    $hash = 'md5';
    
    // This means echo md5('foo');
    // Output: acbd18db4cc2f85cedef654fccc4a4d8
    echo $hash('foo');
    
  • $$foo 是一个变量。
    可以包含变量名称的字符串。
    $foo

    $foo = 'bar';
    $bar = 'baz';
    
    // This means echo $bar;
    // Output: baz
    echo $$foo;
    
  • $bar[$foo] 是一个可变数组键。
    可以包含可用作数组键的任何内容,例如数字索引或关联名称。
    $foo

    $bar = array('first' => 'A', 'second' => 'B', 'third' => 'C');
    $foo = 'first';
    
    // This tells PHP to look for the value of key 'first'
    // Output: A
    echo $bar[$foo];
    

PHP手册中有一篇关于变量的文章,还有一篇关于匿名函数的文章(但我没有在上面展示后者的例子)。

评论

0赞 BoltClock 9/5/2010
可变数组键非常主要。我包含了变量和变量函数的PHP手册链接。
1赞 NikiC 9/5/2010
如果你使用扩展变量语法,事情会变得非常有趣。这允许类似甚至更有趣的事情,例如(这是)。${'prefix_' . $name}${$var = 'var'}'var'
3赞 ircmaxell 9/5/2010
+1:“变量函数”调用也可以用于声明魔术方法的对象(从 PHP 5.3 开始)。因此,它可以处理字符串函数名称、返回自 、对象(自 5.3 以来使用匿名函数时创建)或声明方法的泛型对象。太糟糕了,你不能在其他回调类型上使用它()...__invokecreate_function()Closure__invokearray('classname', 'methodname')