程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了检测PHP变量是否为引用/引用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决检测PHP变量是否为引用/引用?

开发过程中遇到检测PHP变量是否为引用/引用的问题如何解决?下面主要结合日常开发的经验,给出你关于检测PHP变量是否为引用/引用的解决方法建议,希望对你解决检测PHP变量是否为引用/引用有所启发或帮助;

您可以使用debug_zval_dump

function countRefs(&$var) {
    ob_start();
    deBUG_zval_dump(&$var);
    preg_match('~refcount\((\d+)\)~', ob_get_clean(), $matches);
    return $matches[1] - 4;
}

$var = 'A';
echo countRefs($var); // 0

$ref =& $var;
echo countRefs($var); // 1

从PHP 5.4开始,这不再起作用,因为他们删除了通过引用支持传递的调用时间,并可能E_STRICT在较低版本上引发级别错误。

如果您想知道-4上面函数的来源:您告诉我…我是通过尝试得到的。在我看来,它应该仅为3(变量,函数中的变量,传递给的变量Zend_deBUG_zval),但我不太擅长PHP的内部结构,似乎它会在途中的某个地方创建另一个引用;)

解决方法

PHP中是否有一种方法可以确定给定变量是否是对另一个变量的引用和/或被另一个变量引用?考虑到php.net上的注释,设置可能$a=& $b意味着“ $ a和$ b在这里完全相等。 我可能会无法分开检测“对……的引用”和“对……的引用” 。$ a并不指向$ b或反之亦然。$ a和$
b指向同一位置。

如果无法确定给定变量是否是引用/引用,是否存在一种通用方法来确定两个变量是否是彼此引用?再次,对php.net
的注释提供了进行这种比较的功能-
尽管它涉及编辑一个变量并查看另一个变量是否受到类似影响。如果可能的话,我宁愿避免这样做,因为我正在考虑的某些变量大量使用了魔术getters /
setters。

在这种情况下,请求的背景是编写调试功能以帮助详细查看结构。

大佬总结

以上是大佬教程为你收集整理的检测PHP变量是否为引用/引用全部内容,希望文章能够帮你解决检测PHP变量是否为引用/引用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: