如何判断 PHP 变量是不是为引用变量
Posted
技术标签:
【中文标题】如何判断 PHP 变量是不是为引用变量【英文标题】: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就行了。 【参考方案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 的示例。
【讨论】:
以上是关于如何判断 PHP 变量是不是为引用变量的主要内容,如果未能解决你的问题,请参考以下文章