gpt4 book ai didi

php - PHP 中的对象是按值分配还是按引用分配?

转载 作者:IT王子 更新时间:2023-10-29 00:05:32 25 4
gpt4 key购买 nike

在这段代码中:

<?php
class Foo
{
var $value;

function foo($value)
{
$this->setValue($value);
}

function setValue($value)
{
$this->value=$value;
}
}

class Bar
{
var $foos=array();

function Bar()
{
for ($x=1; $x<=10; $x++)
{
$this->foos[$x]=new Foo("Foo # $x");
}
}

function getFoo($index)
{
return $this->foos[$index];
}

function test()
{
$testFoo=$this->getFoo(5);
$testFoo->setValue("My value has now changed");
}
}
?>

当方法 Bar::test() 运行并更改 foo 对象数组中 foo # 5 的值时,数组中的实际 foo # 5 是否会受到影响,或者$testFoo 变量是否只是一个在函数结束时不再存在的局部变量?

最佳答案

为什么不运行该函数并找出答案呢?

$b = new Bar;
echo $b->getFoo(5)->value;
$b->test();
echo $b->getFoo(5)->value;

对我来说,上面的代码(连同你的代码)产生了这个输出:

Foo #5
My value has now changed

这不是由于“按引用传递”,而是由于“按引用赋值”。在 PHP 5 中,引用赋值是对象的默认行为。如果您想按值分配,请使用 clone关键字。

关于php - PHP 中的对象是按值分配还是按引用分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1107016/

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