如何从数组键中创建变量

3
我想提取一个数组的键作为变量。我有以下代码:
``` 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”?

提前致谢。


4
抱歉,您需要使用extract()函数:http://php.net/manual/en/function.extract.php 。该函数可以将数组中的键名作为变量名,将键值作为变量值导入到当前符号表中。 - user5286777
这似乎没什么用。你仍然可以通过 echo $array['bantya'] 获取 BANTYA - u_mulder
使用 $GLOBALS[$key] 代替 $$key 来创建全局变量。或者直接使用 extract() 函数。 - Barmar
是的,使用extract解决了这个问题。而echo $array['bantya']也是一个解决方案,但打字更长。 - bantya
哈哈,打字更长了。 - u_mulder
1个回答

1
我认为这会很有帮助。在PHP中使用extract()。请参见以下示例。 $array = ( "bantya" => "BANTYA", "sontya" => "SONTYA", "niltya" => "NILTYA" ); extract($array); var_dump($bantya); 然后你将获得新的变量:$bantya$sontya$niltya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接