加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何检查变量是否在PHP中通过引用传递

发布时间:2020-12-13 17:26:41 所属栏目:PHP教程 来源:网络整理
导读:直截了当: 我想写一些代码来告诉变量是否通过引用传递. 例如: ?phpfunction isReference($variable) { //return TRUE if $something was passed //return FALSE if $something was passed}$text = 'Anything';$a = isReference($text); //return TRUE$b =
直截了当:
我想写一些代码来告诉变量是否通过引用传递.
例如:

<?php
function isReference($variable) {
    //return TRUE if &$something was passed
    //return FALSE if $something was passed
}
$text = 'Anything';
$a = isReference(&$text); //return TRUE
$b = isReference($test); //return FALSE
?>

对于那些好奇的人 – 我为什么需要它?
首先,我不想留下未解决的问题.
其次,我目前通过编写mysqli的扩展来增强技能,这将扩展类似于PDO的方式.如果有人知道PDO中bindParam和bindValue之间的区别,他们知道这是这个问题的解决方法.我可以做两个函数,但我想知道是否可以使用一个函数.

提前致谢.

解决方法

这是一种不使用debug_zval_dump函数的方法:

function isReference($variable) {
    $variable = array($variable);
    $arg = func_get_arg(0);
    $isRef = isset($arg[0]) && $arg === array($variable[0]);
    $variable = $variable[0];

    return $isRef;
}

注意:如果这不起作用,只有一个案例:

$text = array(&$text); // although i don't see why such a structure could be used
isReference($text); // will wrongly return false

显然,您可以通过使用随机唯一键(而不是0)来绕过此限制.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读