Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将值重新分配给传递给函数的php对象_Php - Fatal编程技术网

如何将值重新分配给传递给函数的php对象

如何将值重新分配给传递给函数的php对象,php,Php,如果我在PHP中将一个对象传递给一个函数,它将通过引用传递,如果我将该对象设置为一个新对象,它将不会“粘滞”。我如何将一个新对象分配给一个传入的对象,而不遍历所有属性 e、 g: 可能需要返回新值,然后才能访问新值: function Foo($obj) { // do stuff and create new obj $obj = $newObj; // upon function exit, the original $obj value is as it was

如果我在PHP中将一个对象传递给一个函数,它将通过引用传递,如果我将该对象设置为一个新对象,它将不会“粘滞”。我如何将一个新对象分配给一个传入的对象,而不遍历所有属性

e、 g:


可能需要返回新值,然后才能访问新值:

function Foo($obj)
{
    // do stuff and create new obj
    $obj = $newObj;

    // upon function exit, the original $obj value is as it was
    return $obj; 
}

可能需要返回新值,然后才能访问新值:

function Foo($obj)
{
    // do stuff and create new obj
    $obj = $newObj;

    // upon function exit, the original $obj value is as it was
    return $obj; 
}
如果我在PHP中将一个对象传递给一个函数,它将通过引用传递

在PHP中,对象通过“指针值”传递,例如,指向对象的指针被复制到函数参数中:

function test($arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // "123"
要通过指针引用进行传递,请在参数前面加一个符号:

function test(&$arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // Undefined property
但应避免指针引用,因为它们容易混淆,而只返回新对象:

function test($arg) {
    return new stdClass();
}
如果我在PHP中将一个对象传递给一个函数,它将通过引用传递

在PHP中,对象通过“指针值”传递,例如,指向对象的指针被复制到函数参数中:

function test($arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // "123"
要通过指针引用进行传递,请在参数前面加一个符号:

function test(&$arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // Undefined property
但应避免指针引用,因为它们容易混淆,而只返回新对象:

function test($arg) {
    return new stdClass();
}

“如果我在PHP中将一个对象传递给一个函数,它是通过引用传递的”——这是不正确的。阅读差异:。如果要将对象传递给函数并希望函数能够替换对象,则必须使用引用。或者,更好的方法是让函数返回另一个对象,并在调用代码中进行替换。可能重复“如果我在PHP中将对象传递给函数,它将通过引用传递”——这是不正确的。阅读差异:。如果要将对象传递给函数并希望函数能够替换对象,则必须使用引用。或者,更好的方法是让函数返回另一个对象,并在调用代码中进行替换。这可能的重复将只返回一个仍然指向原始对象的变量。要返回新实例,您需要克隆对象,否则在此处返回对象没有什么好处(除了更好地读取代码)。这只会返回一个仍然指向原始对象的变量。要返回一个新实例,您需要克隆对象,否则在这里返回对象没有什么好处(除了更好地阅读代码)。