gpt4 book ai didi

php - 检测 PHP 变量是否为引用/被引用

转载 作者:IT王子 更新时间:2023-10-28 23:45:54 25 4
gpt4 key购买 nike

PHP 中有没有办法确定给定变量是否是对另一个变量的引用和/或是否被另一个变量引用?我明白,鉴于 comment,可能无法将检测“引用”和“引用自”分开。在 php.net 上,设置 $a=& $b 意味着“$a 和 $b 在这里完全相等。$a 不指向 $b,反之亦然。$a 和 $ b 指向同一个地方。"

如果无法确定给定变量是否为引用/被引用,是否存在确定两个变量是否相互引用的通用方法?再次,comment在 php.net 上提供了一个函数来进行这种比较——尽管它涉及编辑一个变量并查看另一个变量是否受到类似影响。如果可能的话,我宁愿避免这样做,因为我正在考虑的一些变量会大量使用魔法 getter/setter。

本例中请求的背景是编写一个调试函数来帮助详细查看结构。

最佳答案

完整的工作示例:

function EqualReferences(&$first, &$second){
if($first !== $second){
return false;
}
$value_of_first = $first;
$first = ($first === true) ? false : true; // modify $first
$is_ref = ($first === $second); // after modifying $first, $second will not be equal to $first, unless $second and $first points to the same variable.
$first = $value_of_first; // unmodify $first
return $is_ref;
}

$a = array('foo');
$b = array('foo');
$c = &$a;
$d = $a;

var_dump(EqualReferences($a, $b)); // false
var_dump(EqualReferences($b, $c)); // false
var_dump(EqualReferences($a, $c)); // true
var_dump(EqualReferences($a, $d)); // false
var_dump($a); // unmodified
var_dump($b); // unmodified

关于php - 检测 PHP 变量是否为引用/被引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4817562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com