1

php 的提取函数将变量添加到调用函数的本地范围。我们如何编写自己的 php 函数 extract 来做同样的事情?

4

4 回答 4

1

我认为您不能在纯 PHP 中做到这一点:函数无法访问其调用者的变量。

这看起来像是你需要编写一个 C 扩展来开发的那种东西——你将在那里对 PHP 变量的内部有更多的控制。

(而且我真的不明白您为什么要这样做:为什么不直接使用现有extract功能?)

于 2010-02-12T11:26:20.780 回答
0

PHPJS是一个 javascript 库,其中包含 php 的函数,这里是它的提取函数,你可以从中得到一个想法。话虽如此,我想知道当 php 已经提供了一个函数时,你为什么还要寻找自己的函数。

于 2010-02-12T11:25:24.680 回答
0

好的,如果只是为了好玩,它是可能的:

<?php
$data=array('a' => 1, 'b' => 2);

foreach ($data as $name => $value) {
    ${$name} = $value;
}

echo $a;
?>

但是有些问题——比如与 $data、$name 和 $value 冲突,你不能将它包装在一个函数中。但有可能。

于 2010-02-12T14:42:41.250 回答
0

是的,有可能,

我这样做的原因是因为我需要提取函数中的更多内容,它也应该修剪值

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”

于 2010-07-12T15:41:54.860 回答