84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我正在尝试使用动态变量名称(我不确定它们实际上叫什么),但很像这样:
for($i=0; $i<=2; $i++) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);
返回的是null,这告诉我它不起作用。我不知道我正在寻找的语法或技术是什么,这使得研究变得困难。 $filelist 是之前定义的。
null
$filelist
在 PHP 中,您只需在变量前面添加一个额外的$即可使其成为动态变量:
$
$$variableName = $value;
虽然我不推荐这样做,但您甚至可以链接此行为:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
您可以但不强制将$variableName放在{}之间:
$variableName
{}
${$variableName} = $value;
仅当变量名称本身是多个值的组合时,才强制使用{},如下所示:
${$variableNamePart1 . $variableNamePart2} = $value;
不过,建议始终使用{},因为它更具可读性。
始终使用{}的另一个原因是 PHP5 和 PHP7 处理动态变量的方式略有不同,这在某些情况下会导致不同的结果。
在 PHP7 中,动态变量、属性和方法现在将严格按照从左到右的顺序进行计算,而不是 PHP5 中混合特殊情况。下面的示例显示了评估顺序是如何变化的。
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
将它们包裹在{}中:
${"file" . $i} = file($filelist[$i]);
使用${}是创建动态变量的一种方法,简单的例子:
${}
${'a' . 'b'} = 'hello there'; echo $ab; // hello there
概述
在 PHP 中,您只需在变量前面添加一个额外的
$
即可使其成为动态变量:虽然我不推荐这样做,但您甚至可以链接此行为:
您可以但不强制将
$variableName
放在{}
之间:仅当变量名称本身是多个值的组合时,才强制使用
{}
,如下所示:不过,建议始终使用
{}
,因为它更具可读性。PHP5 和 PHP7 之间的差异
始终使用
{}
的另一个原因是 PHP5 和 PHP7 处理动态变量的方式略有不同,这在某些情况下会导致不同的结果。在 PHP7 中,动态变量、属性和方法现在将严格按照从左到右的顺序进行计算,而不是 PHP5 中混合特殊情况。下面的示例显示了评估顺序是如何变化的。
情况 1:
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
情况 2:
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
情况 3:
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
情况 4:
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
将它们包裹在
{}
中:工作示例
使用
${}
是创建动态变量的一种方法,简单的例子: