提问人:Troy D 提问时间:8/3/2017 更新时间:8/3/2017 访问量:54
解析为相同变量名的不同 PHP 变量变量是同一个变量吗?
Are different PHP variable variables that resolve to the same variable name the same variable?
问:
假设我有一个字符串数组,用于创建变量:
$var_arr = ["item1", "item2", "item3"];
foreach ($var_arr as $item) {
$$item = array();
}
然后,在代码的其他地方,我必须根据不同的数据源重新创建变量变量:
$user_input = [ "prod1" => "widget", "qty1" => 3, "prod2" => "thingy", "qty2" => 1, "prod3" => "dingus", "qty3" => 7 ];
foreach ($user_input as $key => $value) {
$a = "item" . substr($key, -1);
array_push($$a, $value);
}
$$item 和 $$a 是同一个变量,还是它们引用不同的内存块?
答:
1赞
Black Mamba
8/3/2017
#1
两者都是一样的,你在这里需要考虑的是,你只是通过这里的每个赋值引用一个变量:
<?php
$hello ="hello in variable";
$array_hello = ["hello","Yellow"];
$hello_var = "hello";
$item = $array_hello[0];
echo $$hello_var;
echo $$item; //result same as above result
?>
这里需要注意的一件事是,只是使用知道你想要的变量的名称,所以两者都将访问同一个内存块,因为你在这里引用了同一个变量。
这里需要注意的另一件事是 PHP 7 中解释从 PHP 5 的变化${$variable_name_string}
$variable_name_string
表达式 PHP 5 将其解释为,而 PHP 7 将其解释为 有关更多信息,请参阅 PHP 手册$$foo['bar']['baz']
${$foo['bar']['baz']}
($$foo)['bar']['baz']
评论
0赞
Troy D
8/5/2017
谢谢!在你和@chris85之间,我想我明白了。
下一个:在 php 中动态创建类
评论
$$item
正在创建 . 将覆盖,因为它具有相同的名称。我认为这与您正在做的事情大致相同 eval.in/840949(或 eval.in/840950 因为您正在附加)$item1
$$a
$item1