猿问

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

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

我试图使用动态变量名(我不确定它们的实际名称是什么),但大致如下:

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

回报是null这说明它不起作用了。我不知道我在这里寻找的语法或技术是什么,这使得我很难进行研究。$filelist是在前面定义的。


交互式爱情
浏览 986回答 3
3回答

白板的微信

包起来{}:${"file"&nbsp;.&nbsp;$i}&nbsp;=&nbsp;file($filelist[$i]);工作实例使用${}是一种创建动态变量的方法,简单示例如下:${'a'&nbsp;.&nbsp;'b'}&nbsp;=&nbsp;'hello&nbsp;there';echo&nbsp;$ab;&nbsp;//&nbsp;hello&nbsp;there

慕哥9229398

概述在PHP中,您只需添加一个额外的$在变量前面使其成为动态变量:$$variableName&nbsp;=&nbsp;$value;虽然我不建议这样做,但您甚至可以连锁这种行为:$$$$$$$$DoNotTryThisAtHomeKids&nbsp;=&nbsp;$value;你可以,但不是被迫$variableName介于{}&nbsp;:${$variableName}&nbsp;=&nbsp;$value;使用{}只有当变量的名称本身是多个值的组合时,才是强制性的,如下所示:${$variableNamePart1&nbsp;.&nbsp;$variableNamePart2}&nbsp;=&nbsp;$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']()
随时随地看视频慕课网APP
我要回答