为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中使用带动态变量名称的大括号

在PHP中使用带动态变量名称的大括号

PHP
交互式爱情 2019-06-05 11:17:48
在PHP中使用带动态变量名称的大括号我试图使用动态变量名(我不确定它们的实际名称是什么),但大致如下:for($i=0; $i<=2; $i++) {     $("file" . $i) = file($filelist[$i]);}var_dump($file0);回报是null这说明它不起作用了。我不知道我在这里寻找的语法或技术是什么,这使得我很难进行研究。$filelist是在前面定义的。
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

包起来{}:

${"file" . $i} = file($filelist[$i]);

工作实例


使用${}是一种创建动态变量的方法,简单示例如下:

${'a' . 'b'} = 'hello there';echo $ab; // hello there


查看完整回答
反对 回复 2019-06-05
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

概述

在PHP中,您只需添加一个额外的$在变量前面使其成为动态变量:

$$variableName = $value;

虽然我不建议这样做,但您甚至可以连锁这种行为:

$$$$$$$$DoNotTryThisAtHomeKids = $value;

你可以,但不是被迫$variableName介于{} :

${$variableName} = $value;

使用{}只有当变量的名称本身是多个值的组合时,才是强制性的,如下所示:

${$variableNamePart1 . $variableNamePart2} = $value;

然而,建议始终使用{}因为它的可读性更强。

PHP 5与PHP 7的差异

另一个经常使用的理由{},即PHP 5和PHP 7对动态变量的处理方式略有不同,这在某些情况下会导致不同的结果。

在PHP 7中,动态变量、属性和方法现在将严格按照从左到右的顺序进行评估,而不是在PHP 5中混合特殊情况。下面的例子显示了评估顺序的变化。

案例1:$$foo['bar']['baz']

  • PHP5相互作用:

    ${$foo['bar']['baz']}

  • PHP7相互作用:

    ${$foo}['bar']['baz']

案例2:$foo->$bar['baz']

  • PHP5相互作用:

    $foo->{$bar['baz']}

  • PHP7相互作用:

    $foo->{$bar}['baz']

案例3:$foo->$bar['baz']()

  • PHP5相互作用:

    $foo->{$bar['baz']}()

  • PHP7相互作用:

    $foo->{$bar}['baz']()

案例4:Foo::$bar['baz']()

  • PHP5相互作用:

    Foo::{$bar['baz']}()

  • PHP7相互作用:

    Foo::{$bar}['baz']()


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 985 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信