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

标签 php reference

直截了当: 我想写一些代码来判断一个变量是否通过引用传递。 例如:

<?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
?>

对于那些好奇的人——我为什么需要它? 首先,我不喜欢留下 Unresolved 问题。 其次,我目前正在通过编写 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

显然,您可以使用随机唯一 key (而不是 0)绕过此限制。

关于php - 如何检查变量是否在PHP中通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958610/

相关文章:

php - 在 PHP 中通过 CURL 调用 SOAP 方法,调用需要客户端身份验证

PHP、MySQL 和 "sleeping"连接

javascript - 发布 API 问题后尝试从 api 获取

php - 如何在wordpress中的the_content()上实现网格系统

reference - 什么是软件开发引用的最佳在线图书服务?

java - 如何查找成员所属的对象

php - 使用 REQUEST_METHOD ="POST"从 C++ 调用 php-cgi

java - 通常如何在 java 中引用枚举项

c++ - 这似乎是 C++ Primer 5th edition 一书中的错误

php - JavaScript 通过引用传递变量