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

php值传递是什么意思

php 2023-05-14 20:05:01 761人浏览 泡泡鱼
摘要

在PHP中,值传递是指在调用函数时将实际参数复制一份再传递给函数的形参,实际上形参和实参分别占用不同的存储单元。值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的

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

php值传递是什么意思

教程操作环境:windows7系统、php8版、DELL G3电脑

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

值传递

值传递是 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;
?>

运行结果如下:

1.png

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

引用传递

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

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

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;
?>

运行结果如下:

2.png

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

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

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

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

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

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

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

说明:

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

以上就是php值传递是什么意思的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: php值传递是什么意思

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

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

猜你喜欢
  • php值传递是什么意思
    在php中,值传递是指在调用函数时将实际参数复制一份再传递给函数的形参,实际上形参和实参分别占用不同的存储单元。值传递的特点是单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,在调用结束后,形参的存储单元被释放,而形参值的...
    99+
    2023-05-14
    php
  • php值传递指的是什么
    这篇文章主要介绍了php值传递指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php值传递指的是什么文章都会有所收获,下面我们一起来看看吧。在php中,值传递是指在调用函数时将实际参数复制一份再传递给函...
    99+
    2023-07-05
  • php 空值是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php 空值是什么意思?php:空值(null)数据类型空值(null):空值,跟它的名字一样,表示一个变量没有任何值。空值(null)是不区别大小写的,也就是null与...
    99+
    2018-01-01
    php 空值
  • php按值传递和引用传递的区别是什么
    这篇文章主要讲解了“php按值传递和引用传递的区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php按值传递和引用传递的区别是什么”吧!说明按值传递中php必须复制值。特别是对于大型...
    99+
    2023-06-20
  • php中返回值是什么意思
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php中返回值是什么意思php函数的返回值是什么?在 PHP 中,函数的返回值可以是任意类型的数据;当然,函数也可以不返回值。函数使用 return 关键字返回数据,...
    99+
    2019-03-26
    php
  • php中空值指的是什么意思
    小编给大家分享一下php中空值指的是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php空值是指null数据类型,表示一个变量没有任何值;空值(null)是不区别大小写的,也就是null与NULL或Null是一样的...
    99+
    2023-06-26
  • php数组赋值模板是什么意思
    PHP是一种广泛使用的编程语言,用于在Web开发中创建动态网页。在PHP中,数组是一种非常常见的数据类型。它可以存储多个值,并且可以使用单个变量名称引用整个数据集。赋值模板是指将一个数组的所有值赋值给另一个数组。在PHP中,可以使用多种方法...
    99+
    2023-05-19
  • php数组传递是引用传值吗
    PHP数组传递不是引用传递,而是值传递;在调用函数时通过将PHP数组作为实参赋给形参,在函数中修改,并不会影响到数组本身,说明此过程中的传递是值传递,数组变量并非指向此数组本身的引用。php零基础到就业直播视频课:进入学习程序员必备接口测试...
    99+
    2024-04-02
  • php 是什么意思
    本文操作环境:Windows7系统、PHP7.4版、DELL G3电脑php是什么意思 ?PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并...
    99+
    2015-10-12
    php
  • php是什么意思
    PHP是一种通用开源脚本语言,与C语言类似,是常用的网站编程语言,随着移动应用的兴起,也可用于开发API接口,几乎支持所有流行的数据库以及操作系统,PHP 语言作为当今热门的网站程序开发语言,它具有成本低、速度快、可移植性好、内置丰富的函数...
    99+
    2024-04-02
  • Java是值传递还是引用传递
    本篇内容主要讲解“Java是值传递还是引用传递”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java是值传递还是引用传递”吧!1.值类型通俗意义上来说,所谓的值类型指的就是 Java 中的 8 ...
    99+
    2023-06-16
  • java中值传递和引用传递的区别是什么
    在Java中,值传递(pass by value)和引用传递(pass by reference)是两种不同的参数传递方式。值传递是...
    99+
    2023-08-14
    java
  • php cli是什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,cli全称“Command Line Interface”,意思为“命令行接口”,是一种命令行运行模式。PHP的CLI命令行运行模式浅析在做开发的时候,我们...
    99+
    2020-05-15
    php cli
  • php explode是什么意思
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑在php中,explode的意思为“字符串转数组”。explode() 函数可以基于字符串分隔符拆分字符串,即它将一个字符串根据分隔符拆分为若干个子串,然后将这些子串组...
    99+
    2017-08-14
    php explode
  • php oop 是什么意思
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php oop 是什么意思?PHP 面向对象在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息...
    99+
    2020-07-26
    php oop
  • php vc15是什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php vc15是什么意思?php vc15就是指该版本PHP是用Visual Studio 2017编译的,也就是说当用户下载VC15版本的PHP,就需要先安装“Visua...
    99+
    2020-09-14
    php vc15
  • php pre是什么意思
    本文操作环境:Windows7系统、PHP7.1、Dell G3。php pre是什么意思<pre> </pre>是html标签,意思是按原样输出不做更改。php代码中用pre主要是做错误代码输出时候,或者打印数组输...
    99+
    2017-09-06
    php pre
  • php中=是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php中=是什么意思?PHP 中基础的赋值运算符是 "="。这意味着右侧赋值表达式会为左侧运算数设置值。如 z=x+y,右侧表达式为左侧运算数设置值。...
    99+
    2021-07-01
    php
  • php static 是什么意思
    本文操作环境:windows7系统、PHP7.4版、DELL G3电脑php static 是什么意思static是PHP内置关键词。静态(static)关键字 小技巧本页说明了用 static 关键字来定义静态方法和属性。static 也...
    99+
    2015-02-21
    php static
  • php soap是什么意思
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑一、php soap是什么意思?什么是wsdl,为什么要用他们SOAP是基于XML和HTTP通信协议,xml各种平台,各种语言都支持的一个种语言。http呢它得到了所有的...
    99+
    2015-04-05
    soap php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作