【发布时间】:2017-01-03 22:19:29
【问题描述】:
我正在尝试将数组的键提取为变量。我有以下代码:
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 行却不正确。它说:
Notice: Undefined variable: bantya in file\path on line 15
我的问题是,为什么会显示这个错误?声明makeVar函数后,如何使第15行全局输出“BANTYA”(不在function makeVar($array)范围内)?
提前谢谢..
【问题讨论】:
-
糟糕。使用
extract():php.net/manual/en/function.extract.php -
这似乎没用。你仍然可以通过
echo $array['bantya']获得BANTYA -
分配给
$GLOBALS[$key]而不是$$key以创建一个全局变量。或者只使用extract()。 -
是的,使用 extract 解决了这个问题。
echo $array['bantya']是一个解决方案,但输入时间更长。 -
哈哈,打字时间长了。
标签: php arrays function scope global-variables