返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php值传递指的是什么
  • 569
分享到

php值传递指的是什么

2023-07-05 01:07:24 569人浏览 独家记忆
摘要

这篇文章主要介绍了PHP值传递指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php值传递指的是什么文章都会有所收获,下面我们一起来看看吧。在php中,值传递是指在调用函数时将实际参数复制一份再传递给函

这篇文章主要介绍了PHP值传递指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php值传递指的是什么文章都会有所收获,下面我们一起来看看吧。

在php中,值传递是指在调用函数时将实际参数复制一份再传递给函数的形参,实际上形参和实参分别占用不同的存储单元。值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。

在调用函数时,需要向函数传递参数,被传入函数的参数称为实参,而函数定义的参数称为形参。而向函数传递参数的方式有四种,分别是值传递、引用传递、默认参数和可变长度参数。

值传递

值传递是 PHP 中函数的默认传值方式,也称为“拷贝传值”。顾名思义值传递的方式会将实参的值复制一份再传递给函数的形参,所以在函数中操作参数的值并不会对函数外的实参造成影响。因此如果不希望函数修改实参的值,就可以通过值传递的方式。

值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。

【示例】下面定义一个简单的函数,函数有两个参数,在函数中交换参数的值。

<?php    function swap($a, $b){        echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>';        $temp = $a;        $a = $b;        $b = $temp;        echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>';    }    $x = 5;    $y = 7;    echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>';    swap($x, $y);    echo '函数外,交换后 $x = '.$x.', $y = '.$y;?>

运行结果如下:

php值传递指的是什么

通过运行结果可以看到,在函数内,数值确实是交换了,而在函数外部,数值却没有变化。因此可以说,函数的值传递只是传递变量的副本。那么要是想让函数能够操作函数外实参的话,就需要使用引用传递的方式了。

引用传递

参数的引用传递就是把实参的内存地址复制一份,然后传递给函数的形参,实参和形参都指向同一个内存地址,因此函数对形参的操作,会影响到函数外的实参。

按引用传递就是将实参的内存地址传递到函数的形参中。因此实参和形参指向的是同一个内存地址。这时在函数内部的所有操作都会影响到函数外实参的值。引用传递的方式就是在值传递的基础上加上一个&符号,如下所示:

function name (&参数1, &参数2, ..., &参数3) {    ...    }

【示例】将上面示例的代码略作调整,使用引用传递的方式向 swap 函数中传递参数,代码如下所示:

<?php    function swap(&$a, &$b){        echo '函数内,交换前 $a = '.$a.', $b = '.$b.'<br>';        $temp = $a;        $a = $b;        $b = $temp;        echo '函数内,交换后 $a = '.$a.', $b = '.$b.'<br>';    }    $x = 5;    $y = 7;    echo '函数外,交换前 $x = '.$x.', $y = '.$y.'<br>';    swap($x, $y);    echo '函数外,交换后 $x = '.$x.', $y = '.$y;?>

运行结果如下:

php值传递指的是什么

php值传递和引用传递的区别

值传递:在函数范围内,改变变量值得大小,都不会影响到函数外边的变量值。

引用传递:在函数范围内,对值的任何改变,在函数外部也有所体现,因为传引用传的是内存地址。

敲两段代码然后就可以看出两者的区别,咱们透过现象看本质

function sum($a){  $a++;  $b = $a;  return $b;}$a = 10;echo sum($a).'<br />';//11echo $a;//10
function sum(&$a){  $a++;  $b = $a;  return $b;}$a = 10;echo sum($a).'<br />';//11echo $a;//11

两段代码的差别在于函数sum的参数上,一个是传值$a,另一个是传引用&$a,其结果是传值过后$a的值最终没有发生改变,反之传引用过后$a的值发生了变化。这里学过C语言的童鞋就明白是怎么回事了,压栈的是引用的副本。

由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样,只是不用解引用) &是指向某个变量地址的符号,函数sum中的形参&$a实际上就是实参$a,那么将其传进sum中进行了一次++运算之后,实参$a的值实际上也就发生了改变,就是这么回事。

说明:

按值传递中原来参数的值在调用其他函数之后还是原来的值,而引用传递则是改变了原来的值。按照按值传递的做法来传值时,如果需要原来的值发生改变,则需要在进行代码复制,若是值够大或者是一大串字符串时,会使代码比较多,重复,而引用传递则不需要复制PHP代码,对提高性能这一个方面有很大的优势。

关于“php值传递指的是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“php值传递指的是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: php值传递指的是什么

本文链接: https://lsjlt.com/news/348810.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php值传递指的是什么
    这篇文章主要介绍了php值传递指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php值传递指的是什么文章都会有所收获,下面我们一起来看看吧。在php中,值传递是指在调用函数时将实际参数复制一份再传递给函...
    99+
    2023-07-05
  • php值传递是什么意思
    在php中,值传递是指在调用函数时将实际参数复制一份再传递给函数的形参,实际上形参和实参分别占用不同的存储单元。值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的...
    99+
    2023-05-14
    php
  • php按值传递和引用传递的区别是什么
    这篇文章主要讲解了“php按值传递和引用传递的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php按值传递和引用传递的区别是什么”吧!说明按值传递中php必须复制值。特别是对于大型...
    99+
    2023-06-20
  • go值传递和指针传递有什么不同
    在Go语言中,函数参数可以通过值传递或指针传递。值传递是将参数的值复制给函数的参数,而指针传递是将参数的地址传递给函数的参数。 当使...
    99+
    2024-02-29
    go
  • 按值传递 vs. 按指针传递
    变量赋值有两种方式:按值传递、按"指针"传递(指针也常称为"引用")。不同的编程语言赋值的方式不一样,例如Python是按"指针"传递的,Go是按值传递的。 注意,"指针"加了引号,因为它不是真正的按指针拷贝,见下文分析。 参数传值其实...
    99+
    2023-01-30
    指针
  • java中值传递和引用传递的区别是什么
    在Java中,值传递(pass by value)和引用传递(pass by reference)是两种不同的参数传递方式。值传递是...
    99+
    2023-08-14
    java
  • php数组传递是引用传值吗
    PHP数组传递不是引用传递,而是值传递;在调用函数时通过将PHP数组作为实参赋给形参,在函数中修改,并不会影响到数组本身,说明此过程中的传递是值传递,数组变量并非指向此数组本身的引用。php零基础到就业直播视频课:进入学习程序员必备接口测试...
    99+
    2024-04-02
  • C++之值传递&指针传递&引用传递的示例详解
    目录1.函数基础2.值传递3.指针传递4.引用传递1.函数基础 一个函数由以下四部分组成: 返回类型函数名参数(0个或多个)函数体 其中,函数的参数叫做形参,函数执行的操作的语句块叫...
    99+
    2022-11-13
    C++值传递 指针传递 引用传递 C++ 值传递 C++ 指针传递 C++ 引用传递
  • php函数间的参数传递(值传递/引用传递)
    php:函数间的参数传递 1.值传递 复制代码 代码如下: <php function exam($var1){ $var1++; echo "In Exam:" . $var...
    99+
    2022-11-15
    php函数 参数传递
  • C++指针传递的作用是什么
    这篇文章主要介绍了C++指针传递的作用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++指针传递的作用是什么文章都会有所收获,下面我们一起来看看吧。具体如下void pointerTest(i...
    99+
    2023-07-05
  • Java是值传递还是引用传递
    本篇内容主要讲解“Java是值传递还是引用传递”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java是值传递还是引用传递”吧!1.值类型通俗意义上来说,所谓的值类型指的就是 Java 中的 8 ...
    99+
    2023-06-16
  • python中解包裹传递指的是什么
    小编给大家分享一下python中解包裹传递指的是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明调用函数时,函数接收的实际参数为元组或字典类型时,可以使...
    99+
    2023-06-15
  • Java编程是值传递还是引用传递
    这篇文章主要介绍“Java编程是值传递还是引用传递”,在日常操作中,相信很多人在Java编程是值传递还是引用传递问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java编程是值传递还是引用传递”的疑惑有所帮助!...
    99+
    2023-06-30
  • python值传递和引用传递有什么不同
    在Python中,变量的传递方式既不是纯粹的值传递,也不是纯粹的引用传递,而是一种称为"对象的引用传递"的方式。值传递是指在函数调用...
    99+
    2023-09-23
    python
  • C/C++值传递和址传递有什么区别
    这篇文章主要为大家展示了“C/C++值传递和址传递有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C/C++值传递和址传递有什么区别”这篇文章吧。C/C++的按值传递和按地址传递有明显不...
    99+
    2023-06-25
  • java支持值传递还是引用传递
    本篇内容主要讲解“java支持值传递还是引用传递”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java支持值传递还是引用传递”吧!文章目的:验证Java语言到底是值传递还是引用传递以及Java参...
    99+
    2023-06-30
  • php函数是如何按值传递参数的
    本篇内容主要讲解“php函数是如何按值传递参数的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php函数是如何按值传递参数的”吧!向函数传递参数的方式有四种,分别是值传递、引用传递、默认参数和可...
    99+
    2023-06-20
  • JavaScript中值传递和引用传递有什么区别
    JavaScript中值传递和引用传递有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称...
    99+
    2023-06-14
  • Java是什么传递
    这篇文章主要介绍“Java是什么传递”,在日常操作中,相信很多人在Java是什么传递问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java是什么传递”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!开篇先来曝...
    99+
    2023-06-27
  • php中传值与传址的区别是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑值传递值传递是 PHP 中函数的默认传值方式,也称为“拷贝传值”。顾名思义值传递的方式会将实参的值复制一份再传递给函数的形参,所以在函数中操作参数的值并不会对函数外的实...
    99+
    2021-08-13
    php 传值 传址
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作