【发布时间】:2010-02-12 11:20:52
【问题描述】:
php 的提取函数将变量添加到调用函数的本地范围。我们如何编写自己的 php 函数 extract 来做同样的事情?
【问题讨论】:
-
你为什么要这样做? - 我不明白这个问题的意图。
-
我当然不会那样做。我只是在想是否有任何方法可以做到这一点。现在它确认我们不能。
标签: php scope extract symbol-table
php 的提取函数将变量添加到调用函数的本地范围。我们如何编写自己的 php 函数 extract 来做同样的事情?
【问题讨论】:
标签: php scope extract symbol-table
我认为您不能在纯 PHP 中做到这一点:函数无法访问其调用者的变量。
这看起来像是你需要编写一个 C 扩展来开发的东西——你将在那里对 PHP 变量的内部有更多的控制。
(我真的不明白你为什么要这样做:为什么不直接使用现有的 extract 函数?)
【讨论】:
好吧,如果只是为了好玩的话是可以的:
<?php
$data=array('a' => 1, 'b' => 2);
foreach ($data as $name => $value) {
${$name} = $value;
}
echo $a;
?>
但是有些问题 - 比如与 $data、$name 和 $value 的冲突,您不能将其包装在函数中。但有可能。
【讨论】:
是的,有可能,
我这样做的原因是因为我需要提取函数中的更多内容,它也应该修剪值
function extractArray($ar) {
if(count($ar)>=1) {
foreach($ar as $k=>$v) {
$GLOBALS[$k] = (is_array($v)?$v:trim($v));
}
}
}
我只是传递我的 $_GET、$_POST 和其他这样的数组 例如 $_GET['username'] = 'justnajm'; extractArray($_GET);
我可以回显它会打印“justnajm”
【讨论】: