通过5个php实例细致说明传值与传引用的区别

yizhihongxing

针对“通过5个php实例细致说明传值与传引用的区别”的命题,以下是详细攻略:

1. 写作思路

  • 确定主题:传值与传引用的区别。
  • 列举主题开头的“5个PHP实例”,以便更加具体地说明区别。
  • 确定标准的markdown格式文本,注意标题的使用,包括一级、二级、三级标题等,并对代码块进行高亮处理。
  • 从实例中具体阐述传值和传引用的不同,包括基本数据类型、数组、对象等。

2. 写作具体步骤

2.1 传值和传引用

PHP中,函数参数的传递有两种方式:传值和传引用,传值是指在调用函数时将实参的值拷贝到形参中,而传引用是指在调用函数时将实参的变量作为形参的变量名称传递给函数使用。两种方式有什么不同呢?

  • 传值:将实参的值拷贝到形参中,但在函数内部修改形参的值并不影响实参。

  • 传引用:将实参的变量作为形参的变量名称传递给函数使用,函数修改形参的值时,实参的值也会被修改。

2.2 传值与传引用的不同

下面将通过5个实例阐述传值与传引用的不同。

实例1:传递一个基本类型数据

下面是一个实例,展示了传递一个基本类型数据时的情况:

function update($value)
{
    $value = $value + 1;
    echo "update value: " . $value . "<br>";
}

$num = 10;
echo "before update value: " . $num . "<br>";
update($num);
echo "after update value: " . $num . "<br>";

该例子中,$num的值为10,通过函数update()更新后的值为11。但是在调用update()函数后,再次输出$num的值仍为10,说明在update()函数中传值并没有修改$num的值。

实例2:传递一个数组

接下来我们来看另一个例子,它展示了传递一个数组时的情况:

function update($arr)
{
    $arr[0] = $arr[0] + 1;
    echo "update array: ";
    print_r($arr);
    echo "<br>";
}

$arr = array(1, 2, 3);
echo "before update array: ";
print_r($arr);
echo "<br>";
update($arr);
echo "after update arary: ";
print_r($arr);
echo "<br>";

该例子中,$arr的值为array(1, 2, 3),通过函数update()更新后的值为array(2, 2, 3)。但是在调用update()函数后,再次输出$arr的值仍为array(1, 2, 3),说明在update()函数中传值并没有修改$arr的值。

实例3:传递一个对象

下面是一个传递对象时的实例:

class Person {
    public $name;
    function setName($name) {
        $this -> name = $name;
    }
    function getName() {
        return $this -> name;
    }
}

function update($obj)
{
    $obj -> setName("It was updated!");
    echo "update object name: " . $obj -> getName() . "<br>";
}

$obj = new Person();
$obj -> setName("It is original!");
echo "before update object name: " . $obj -> getName() . "<br>";
update($obj);
echo "after update object name: " . $obj -> getName() . "<br>";

该实例中,$obj的值为一个实例化对象,通过函数update()更新后的值为"It was updated!"。在调用update()函数后,再次输出$obj的值将变成"It was updated!"说明在update()函数中传引用修改了$obj的值。

实例4:传递基本类型数据的引用

下面是传递基本类型数据的引用实例:

function update(&$value)
{
    $value = $value + 1;
    echo "update value: " . $value . "<br>";
}

$num = 10;
echo "before update value: " . $num . "<br>";
update($num);
echo "after update value: " . $num . "<br>";

该实例中,$num的值为10,通过函数update()更新后的值为11。在调用update()函数后,再次输出$num的值变成了11,说明在update()函数中传引用修改了$num的值。

实例5:传递对象的引用

下面是传递对象的引用实例:

class Person {
    public $name;
    function setName($name) {
        $this -> name = $name;
    }
    function getName() {
        return $this -> name;
    }
}

function update(&$obj)
{
    $obj -> setName("It was updated!");
    echo "update object name: " . $obj -> getName() . "<br>";
}

$obj = new Person();
$obj -> setName("It is original!");
echo "before update object name: " . $obj -> getName() . "<br>";
update($obj);
echo "after update object name: " . $obj -> getName() . "<br>";

该实例中,$obj的值为一个实例化对象,通过函数update()更新后的值为"It was updated!"。在调用update()函数后,再次输出$obj的值变成了"It was updated!",说明在update()函数中传引用修改了$obj的值。

3. 总结

通过以上实例,我们可以看到传值和传引用的区别是非常明显的:传值是将实参的值拷贝到形参中,函数修改形参的值并不影响实参,而传引用则是将实参的变量作为形参的变量名称传递给函数使用,函数修改形参的值时,实参的值也会被修改。同时我们也可以看到传引用在某些情况下能够对代码效率和性能产生显著的影响。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:通过5个php实例细致说明传值与传引用的区别 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • PHP实现一维数组与二维数组去重功能示例

    当我们需要处理一组数据时,其中去重操作是非常常见的。在PHP中,可以使用array_unique函数实现一维数组去重,但是对于二维数组,我们需要写一些代码来实现去重操作。下面是实现一维数组与二维数组去重功能的攻略。 实现一维数组去重 在PHP中,我们可以使用array_unique函数实现一维数组的去重操作。下面是一个示例代码: $arr = array(1…

    PHP 2023年5月26日
    00
  • 非常好的网站生成静态页面防采集策略与方法

    非常好的网站需要具有防止被采集的策略与方法,通常有以下两种方式: 方式一:使用验证码 验证码是一种常见的防止被采集的方法。用户需要在网站中填写完数据后,进入验证码页面,填写验证码,才可以进一步访问信息。这样做可以防止机器通过程序自动化抓取信息。 以下是使用Python库selenium自动填写网站验证码的示例: from selenium import we…

    PHP 2023年5月27日
    00
  • 如何在PHP中操作临时文件

    操作临时文件是在Web开发中常见的需求之一,PHP为我们提供了方便的操作临时文件的方式。下面我将详细讲解如何在PHP中操作临时文件。 创建临时文件 PHP中提供了tmpfile()函数用于创建一个临时文件并返回一个打开文件指针。该函数创建的临时文件只在脚本执行期间存在,当脚本结束时会自动删除。 // 创建临时文件 $temp = tmpfile(); // …

    PHP 2023年5月26日
    00
  • PHP vsprintf()函数格式化字符串操作原理解析

    下面详细讲解一下PHP vsprintf()函数格式化字符串操作原理解析。 什么是vsprintf()函数? vsprintf()函数是PHP中一种用于格式化字符串输出的函数。它可以将一个格式化字符串和一系列参数作为输入,将参数插入到字符串中的占位符中,并返回最终的格式化字符串。 与sprintf()函数不同,vsprintf()函数将参数作为一个数组传递。…

    PHP 2023年5月26日
    00
  • php数组添加元素方法小结

    下面我将详细讲解如何使用PHP数组添加元素的方法。 1. 使用array_push()函数 使用array_push()函数可以将一个或多个元素添加到数组末尾。该函数接收两个参数,第一个参数是要添加元素的数组,第二个参数可以是一个单独的值,也可以是一个包含多个值的数组。 下面是一个示例: $fruits = array("apple", …

    PHP 2023年5月26日
    00
  • PHP实现微信退款的方法示例

    下面是关于“PHP实现微信退款的方法示例”的完整攻略: 1.准备工作 在进行微信退款前,我们需要确保已经完成以下准备工作: 1.1 已经在微信公众平台中创建了应用,并且获得了appid和mchid等信息。 1.2 已经生成了证书文件,包括apiclient_cert.pem和apiclient_key.pem。 1.3 已经开通了微信支付的退款功能。 2.退…

    PHP 2023年5月23日
    00
  • PHP+MYSQL的文章管理系统(二)

    首先我会先对“PHP+MYSQL的文章管理系统(二)”这篇文章进行简单的介绍,然后详细讲解其中的主要内容。 这篇文章主要是关于使用PHP和MYSQL搭建文章管理系统的教程,其中涵盖了系统的设计和功能实现,主要分为以下几个部分: 1.数据库设计和表结构 2.界面设计和前端代码实现 3.后台管理系统的搭建和后端PHP代码实现 4.系统功能实现和操作演示 接下来我…

    PHP 2023年5月24日
    00
  • PHP7 echo和print语句实例用法

    当我们在使用 PHP7 编写代码时,经常需要将结果输出到页面上让用户看到。在 PHP7 中,一些常见的方法是使用 echo 和 print 语句。在本攻略中,将详细讲解 echo 和 print 语句的用法,以及它们的区别和相似点。 echo语句 echo 语句是 PHP7 中最常用的输出方法之一。它允许我们在页面上输出任何值,包括字符串、变量值和数组。 示…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部