【问题标题】:How To Tell If A PHP Variable is a Reference Variable [duplicate]如何判断 PHP 变量是否为引用变量
【发布时间】:2011-12-11 20:28:16
【问题描述】:

可能重复:
Detecting whether a PHP variable is a reference / referenced

我想知道是否有一个函数可以告诉我变量是否是引用变量。如果没有具体的函数,有没有办法判断是不是引用变量?

【问题讨论】:

  • 我认为没有内置函数可以检查变量是否为引用。
  • 有趣的问题,但我想知道用例是什么。
  • 用例是用于调试意外更改的变量。
  • 如果是调试用,var_dump就行了。

标签: php


【解决方案1】:

您可以使用debug_zval_dump 确定这一点。看我的回答on another question

【讨论】:

  • 如果您在另一个问题上回答过这个问题,为什么要在这里回答?
【解决方案2】:

user examples 看来没有直接的方法,但您会在那里找到解决方案。

【讨论】:

    【解决方案3】:

    您可以在 PHP 文档中尝试使用 this function from one of the commenters。但是 afaik 没有内置函数可以检查 var 是否为引用 var。

    【讨论】:

      【解决方案4】:
      <?php
      $a = 1;
      $b =& $a;
      $c = 2;
      $d = 3;
      $e = array($a);
      function is_reference($var){
          $val = $GLOBALS[$var];
          $tmpArray = array();
          /**
           * Add keys/values without reference
           */
          foreach($GLOBALS as $k => $v){
              if(!is_array($v)){
                  $tmpArray[$k] = $v;
              }
          }
      
          /**
           * Change value of rest variables
           */
          foreach($GLOBALS as $k => $v){
              if($k != 'GLOBALS'
                  && $k != '_POST'
                  && $k != '_GET'
                  && $k != '_COOKIE'
                  && $k != '_FILES'
                  && $k != $var
                  && !is_array($v)
              ){
                  usleep(1);
                  $GLOBALS[$k] = md5(microtime());
              }
          }
      
          $bool = $val != $GLOBALS[$var];
      
          /**
           * Restore defaults values
           */
          foreach($tmpArray as $k => $v){
              $GLOBALS[$k] = $v;
          }
      
          return $bool;
      }
      var_dump(is_reference('a'));
      var_dump(is_reference('b'));
      var_dump(is_reference('c'));
      var_dump(is_reference('d'));
      ?>
      

      这是来自the PHP documentation 的示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多