在 PHP 中使用带有动态变量名称的大括号
P粉717595985
P粉717595985 2023-08-29 12:05:01
0
2
393

我正在尝试使用动态变量名称(我不确定它们实际上叫什么),但很像这样:

for($i=0; $i<=2; $i++) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);

返回的是null,这告诉我它不起作用。我不知道我正在寻找的语法或技术是什么,这使得研究变得困难。 $filelist 是之前定义的。

P粉717595985
P粉717595985

全部回复 (2)
P粉588660399

概述

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

$$variableName = $value;

虽然我不推荐这样做,但您甚至可以链接此行为:

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

您可以但不强制将$variableName放在{}之间:

${$variableName} = $value;

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

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

不过,建议始终使用{},因为它更具可读性。

PHP5 和 PHP7 之间的差异

始终使用{}的另一个原因是 PHP5 和 PHP7 处理动态变量的方式略有不同,这在某些情况下会导致不同的结果。

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

情况 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']()
    P粉043295337

    将它们包裹在{}中:

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

    工作示例


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

    ${'a' . 'b'} = 'hello there'; echo $ab; // hello there
      最新下载
      更多>
      网站特效
      网站源码
      网站素材
      前端模板
      关于我们 免责声明 Sitemap
      PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!