卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章76252本站已运行4320

PHP 函数中哪些变量类型作为引用传递时不会复制?

在 php 中,对象、数组和资源变量作为引用传递时不会复制。这意味着函数内对这些变量的更改会反映到原始变量上。例如,当对象作为引用传递时,函数内对对象属性的更改会反映到原始对象;当数组作为引用传递时,函数内对数组元素的更改会反映到原始数组;当资源作为引用传递时,函数内对资源的操作会反映到原始资源。

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, "Hellon");
}

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 的值都发生了更改。

卓越飞翔博客
上一篇: Golang 框架中高效使用并发提升性能
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏