【问题标题】:Can we implement a php extract function in php with out using zend api我们可以在不使用zend api的情况下在php中实现php提取功能吗
【发布时间】:2010-02-12 11:20:52
【问题描述】:

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

【问题讨论】:

  • 你为什么要这样做? - 我不明白这个问题的意图。
  • 我当然不会那样做。我只是在想是否有任何方法可以做到这一点。现在它确认我们不能。

标签: php scope extract symbol-table


【解决方案1】:

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

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

(我真的不明白你为什么要这样做:为什么不直接使用现有的 extract 函数?)

【讨论】:

  • 我只是想知道是否有任何纯 php 的方式来实现提取
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    好吧,如果只是为了好玩的话是可以的:

    <?php
    $data=array('a' => 1, 'b' => 2);
    
    foreach ($data as $name => $value) {
        ${$name} = $value;
    }
    
    echo $a;
    ?>
    

    但是有些问题 - 比如与 $data、$name 和 $value 的冲突,您不能将其包装在函数中。但有可能。

    【讨论】:

      【解决方案4】:

      是的,有可能,

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

      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-12-24
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 2020-01-26
        • 2016-09-12
        • 2019-10-27
        • 1970-01-01
        • 2015-11-20
        相关资源
        最近更新 更多