我想提取一个数组的键作为变量。我有以下代码:
``` foreach($array as $key => $value) { ${$key} = $value; } ```
这将创建与数组键相同名称的变量,并将其值设置为相应的数组值。
问题在于,第11行正确地输出了“BANTYA”,但是第15行却没有。它显示:
``` foreach($array as $key => $value) { ${$key} = $value; } ```
这将创建与数组键相同名称的变量,并将其值设置为相应的数组值。
01 | $array = [
02 | "bantya" => "BANTYA",
03 | "sontya" => "SONTYA",
04 | "niltya" => "NILTYA"
05 | ];
06 |
07 | function makeVar ($array) {
08 | foreach ($array as $key => $value) {
09 | $$key = $value;
10 | }
11 | echo $bantya;
12 | }
13 |
14 | makeVar($array);
15 | echo $bantya;
问题在于,第11行正确地输出了“BANTYA”,但是第15行却没有。它显示:
注意:文件路径上的第15行中未定义变量:bantya
我的问题是,为什么会出现这个错误?如何使第15行在声明makeVar
函数后,在function makeVar($array)
作用域之外全局输出“BANTYA”?
提前致谢。
extract()
函数:http://php.net/manual/en/function.extract.php 。该函数可以将数组中的键名作为变量名,将键值作为变量值导入到当前符号表中。 - user5286777echo $array['bantya']
获取BANTYA
。 - u_mulder$GLOBALS[$key]
代替$$key
来创建全局变量。或者直接使用extract()
函数。 - Barmarecho $array['bantya']
也是一个解决方案,但打字更长。 - bantya