在 php 中,对象、数组和资源变量作为引用传递时不会复制。这意味着函数内对这些变量的更改会反映到原始变量上。例如,当对象作为引用传递时,函数内对对象属性的更改会反映到原始对象;当数组作为引用传递时,函数内对数组元素的更改会反映到原始数组;当资源作为引用传递时,函数内对资源的操作会反映到原始资源。
PHP 中哪些变量类型作为引用传递时不会复制?
在 PHP 中,函数参数可以作为值传递或引用传递。当作为引用传递时,函数内的任何更改都会反映到原始变量。
但是,某些变量类型在作为引用传递时不会复制,包括:
立即学习“PHP免费学习笔记(深入)”;
对象:对象始终作为引用传递,这意味着函数中对对象任何属性或方法的更改都会反映到原始对象。
数组:数组作为引用传递,这意味着函数中对数组任何元素的更改都会反映到原始数组。
资源:资源(例如,文件句柄)作为引用传递,这意味着函数中对资源任何操作都会反映到原始资源。
实战案例
以下示例演示了当作为引用传递时,对象、数组和资源变量的行为:
class MyClass { public $name; } $object = new MyClass(); $object->name = "Original"; $array = ["one", "two", "three"]; $resource = fopen("test.txt", "w"); function change($object, &$array, &$resource) { $object->name = "Changed"; $array[0] = "Four"; fwrite($resource, "Hello\n"); } change($object, $array, $resource); echo $object->name; // Changed echo $array[0]; // Four echo fread($resource, filesize("test.txt")); // Hello
在函数 change 中,$object、$array 和 $resource 作为引用传递。这意味着对这些变量的任何更改都会反映到它们在函数外部的值。因此,$object->name、$array[0] 和 $resource 的值都发生了更改。
以上就是PHP 函数中哪些变量类型作为引用传递时不会复制?的详细内容,更多请关注本网内其它相关文章!