我尝试使用动态变量名(我不知道它们实际上叫什么),但大致是这样的:
for($i=0; $i<=2; $i++) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);
回报是 null 这说明它不起作用。我不知道我要找的语法或技术是什么,这使得研究起来很困难。 $filelist 已在前面定义。
null
$filelist
5tmbdcev1#
我经常对查询返回的结果执行此操作。。例如
// $MyQueryResult is an array of results from a query foreach ($MyQueryResult as $key=>$value) { ${$key}=$value; }
现在我可以只使用$myfieldname(这在echo语句等中更容易)而不是$myqueryresult['myfieldname']是的,这可能是懒惰,但我从来没有任何问题。
lsmepo6l2#
尝试使用 {} 而不是 () :
{}
()
${"file".$i} = file($filelist[$i]);
nqwrtyyt3#
我有一个动态创建变量值并将所有值合并到一个变量中的解决方案。
if($_SERVER['REQUEST_METHOD']=='POST'){ $r=0; for($i=1; $i<=4; $i++){ $a = $_POST['a'.$i]; $r .= $a; } echo $r; }
fcy6dtqo4#
在php中,您只需添加一个 $ 在变量前面使其成为动态变量:
$
$$variableName = $value;
虽然我不建议这样做,但你甚至可以将这种行为连成链:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
你可以但不是被迫 $variableName 介于 {} :
$variableName
${$variableName} = $value;
使用 {} 仅当变量名称本身由多个值组成时才是必需的,如下所示:
${$variableNamePart1 . $variableNamePart2} = $value;
但建议始终使用 {} ,因为它更可读。
另一个经常使用的理由 {} ,即php5和php7处理动态变量的方式略有不同,这在某些情况下会导致不同的结果。在php7中,动态变量、属性和方法现在将严格按照从左到右的顺序进行评估,而不是在php5中混合使用特殊情况。下面的例子显示了评估顺序是如何变化的。
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']()
${$foo['bar']['baz']}
${$foo}['bar']['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
xhv8bpkk5#
尝试使用{}而不是():
chy5wohz6#
tom如果已有数组,则可以将该数组转换为对象并按如下方式使用:
$r = (object) $MyQueryResult; echo $r->key;
iswrvxsc7#
把它们包起来 {} :
${"file" . $i} = file($filelist[$i]);
使用 ${} 是一种创建动态变量的方法,简单示例:
${}
${'a' . 'b'} = 'hello there'; echo $ab; // hello there
lvjbypge8#
我有6个相同的数组,我需要根据另一个变量选择正确的数组,然后给它赋值。在这里显示的例子中,$comp\u cat是'a',所以我需要选择我的'a'数组(当然我还有'b'到'f'数组)请注意,数组中变量位置的值位于右大括号之后。${'comp\u cat.'.$comp\u cat.'\u arr'}[1][0]=“弗雷德·布洛格斯”;${'comp\u cat.'.$comp\u cat.'\u arr'}[1][1]=$file\u tidy;echo'第一个数组值是'.$comp_cat_a_arr[1][0].',第二个值是'.$comp_cat_a_arr[1][1];
8条答案
按热度按时间5tmbdcev1#
我经常对查询返回的结果执行此操作。。
例如
现在我可以只使用$myfieldname(这在echo语句等中更容易)而不是$myqueryresult['myfieldname']
是的,这可能是懒惰,但我从来没有任何问题。
lsmepo6l2#
尝试使用
{}
而不是()
:nqwrtyyt3#
我有一个动态创建变量值并将所有值合并到一个变量中的解决方案。
fcy6dtqo4#
概述
在php中,您只需添加一个
$
在变量前面使其成为动态变量:虽然我不建议这样做,但你甚至可以将这种行为连成链:
你可以但不是被迫
$variableName
介于{}
:使用
{}
仅当变量名称本身由多个值组成时才是必需的,如下所示:但建议始终使用
{}
,因为它更可读。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']()
xhv8bpkk5#
尝试使用{}而不是():
chy5wohz6#
tom如果已有数组,则可以将该数组转换为对象并按如下方式使用:
iswrvxsc7#
把它们包起来
{}
:工作示例
使用
${}
是一种创建动态变量的方法,简单示例:lvjbypge8#
我有6个相同的数组,我需要根据另一个变量选择正确的数组,然后给它赋值。在这里显示的例子中,$comp\u cat是'a',所以我需要选择我的'a'数组(当然我还有'b'到'f'数组)
请注意,数组中变量位置的值位于右大括号之后。
${'comp\u cat.'.$comp\u cat.'\u arr'}[1][0]=“弗雷德·布洛格斯”;
${'comp\u cat.'.$comp\u cat.'\u arr'}[1][1]=$file\u tidy;
echo'第一个数组值是'.$comp_cat_a_arr[1][0].',第二个值是'.$comp_cat_a_arr[1][1];