gpt4 book ai didi

php - 分配对象和分配对象引用有什么区别?

转载 作者:行者123 更新时间:2023-12-04 18:22:35 27 4
gpt4 key购买 nike

我在 PHP 中阅读了对象引用。我对对象引用做了一些实验。

我的疑问是:

我将一个对象分配给另一个变量。然后,我更改了变量的值并打印了变量。两个变量都受到影响。我将对象引用分配给另一个变量。然后我将变量的值更改为一个,这对两者都有影响。

 <?php

##Class
class A
{
var $foo = 1;
}

#Assignment
$a = new A();
$b = $a;

echo "Assignment:\n";
$b->foo = 8;
echo $a->foo."\n";
echo $b->foo."\n";

#Reference
$c = new A();
$d =& $c;

echo "References:\n";
$d->foo = 4;
echo $c->foo."\n";
echo $d->foo."\n";

?>

我的问题是:

分配对象和分配对象引用有什么区别。

两者是一样的还是有区别的?

最佳答案

What is the difference between assigning an object and assigning an object reference



PHP 没有对象引用,因此您无法与不存在的东西进行比较。

但是我假设您想知道以下之间的区别:
$a = new Foo;
$b = $a;


$a = new Foo;
$b = &$a;

第一个是对象的赋值(它是一个对象标识符),第二个是使 $b $a 的别名.如果我们稍微改变一下流程,区别应该会变得很明显:
$a = NULL;
$b = $a;
$a = new Foo;


$a = NULL;
$b = &$a;
$a = new Foo;

在第一个示例(作业)中, $bNULL .在第二个示例中, $b是一个变量别名(又名 PHP 变量引用)。

执行后,ì在第一个例子中 $b自然是 NULL而在第二个中是 $a是。

如您所见,独立于对象,进行赋值与创建变量引用不同。

我希望这可以为您澄清一点。不谈引用,只谈变量别名。这更好地匹配它在 PHP 世界中。

关于php - 分配对象和分配对象引用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361561/

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