php中的变量引用传值学习笔记

所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重新开辟一个完全相同的内存空间。

所谓引用,就是说将对象在内存中的地址传递给目标对象,就相当于使目标对象和原始对象对应同一个内存存储空间。此时,如果对目标对象进行修改,内存中的数据也会改变。

传值的话,如果是非对象,会传一个值的拷贝,对这个变量做任何改动都不影响原值。传引用或者传对象,是传真实的内存地址,对这个变量做的改动会影响原值。

 代码如下 复制代码

 

function func1($a)

{ $a = $a + 1; }

 function func2(&$a)

{ $a = $a + 1; }

$sample = 1;

func1($sample);

echo $sample; // 输出 1

$sample = 1;

func2($sample);

9.echo $sample; // 输出 2

总结

在高中时老师告诉我们引用就是把内存地址给变量这样只要内存地址中发生变化而我们所财会的变量内容也会跟着变了,这个就有点像一个房子放了东西,我们都可以进入拿,只要东西变了我们进去看到的东西是一样的,而不是我把东西拿在手上,这样房里东西变了我这里不变了。

时间: 2024-07-31 00:08:10

php中的变量引用传值学习笔记的相关文章

php 引用传值学习笔记

引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针,替代的是,引用是符号表别名.注意在 PHP 中,变量名和变量内容是不一样的,因此同样的内容可以有不同的名字.最接近的比喻是 Unix 的文件名和文件本身--变量名是目录条目,而变量内容则是文件本身.引用可以被看作是 Unix 文件系统中的 hardlink. 一:变量的引用  代码如下 复制代码 <?php $a =100; $b = &$a; echo $b;    //这里输出100 echo $a

PHP之变量、常量学习笔记

亲密接触PHP之变量.常量学习笔记(阅读笔记自PHP手册) PHP 中一个美元符号($)后面跟上一个变量名称,即表示一个变量.变量的名称是对大小写敏感的.其中变量名允许数字或下划线打头. 有关变量的传地址赋值 PHP 3 中,变量总是传值赋值.PHP 4 提供了另外一种方式给变量赋值:传地址赋值.使用传地址赋值,即简单地追加一个(&)符号到将要赋值的变量前(源变量).这意味着新的变量简单的引用了原始变量,改动新的变量将影响到原始变量,反之亦然. <?php$foo = ''Bob'';$ba

PHP之变量、常量学习笔记_php技巧

有关变量的传地址赋值 PHP 3 中,变量总是传值赋值.PHP 4 提供了另外一种方式给变量赋值:传地址赋值.使用传地址赋值,即简单地追加一个(&)符号到将要赋值的变量前(源变量).这意味着新的变量简单的引用了原始变量,改动新的变量将影响到原始变量,反之亦然. <?php $foo = 'Bob'; $bar = &$foo; $bar = "My name is $bar"; echo $bar; echo $foo;  ?>  变量foo只在首行被赋值,

Python中Random和Math模块学习笔记

  这篇文章主要介绍了Python中Random和Math模块学习笔记,本文讲解了math模块的数学常量.常用简单函数.三角函数等,讲解了random模块的常用函数.随机挑选和排序等内容,需要的朋友可以参考下 由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下 1. math模块 math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准

Java 和 C/C++ 中的char 类型长度学习笔记

java 和 c/c++ 中的char 类型长度学习笔记 这两天在帮同学改一个加密程序.以下是c++语言的核心代码: char cpass[5]; for(int j=0;j<instring.length();j++){      cpass[j] ^= npwd;}   但是转成 java 写时会出现问题,乍一看,几乎可以原封不动的转换,可是结果却是有问题的. 经过网上资料的查找发现,是char类型的问题.实际上这就涉及到 c/c++ 中的数据类型和 java 的数据类型的比较. 先说 ch

javascript中的变量是传值还是传址的?_javascript技巧

这个标题念起来有点拗口,但却是理解数据结构的关键.标题中的4个术语,对应的英文分别是:shallow copy(注意,不是shadow copy).deep copy.pass by value.pass by reference(或pass by address).传址和传引用是一回事. 一门编程语言的核心是数据结构,粗略来讲,可以把数据结构分成不可变类型(immutable)和可变类型(mutable).为什么这么分呢?这涉及到内存分配问题.对于不可变类型,只要分配有限的内存空间即可,而对于

javascript中的变量是传值还是传址

但却是理解数据结构的关键.标题中的4个术语,对应的英文分别是:shallow copy(注意,不是shadow copy).deep copy.pass by value.pass by reference(或pass by address).传址和传引用是一回事. 一门编程语言的核心是数据结构,粗略来讲,可以把数据结构分成不可变类型(immutable)和可变类型(mutable).为什么这么分呢?这涉及到内存分配问题.对于不可变类型,只要分配有限的内存空间即可,而对于不可变类型,理论上则要分

JavaScript变量的声明学习笔记

变量的声明 JavaScript 使用关键字 var 来声明变量,可以先声明后赋值,也可以在声明的同时赋值,多个变量同时声明使用逗号(,)分隔.例如:  代码如下 复制代码 // 先声明,后赋值 var sex; sex="男"; // 声明的同时进行赋值 var age=22; var name="张三"; // 同时声明多个变量 var x=1,y=2,z=3;  // 声明多个变量时用逗号( ,)分开其中,sex.age.name ... 称为 变量名,&qu

浅谈Asp.net多层架构中的变量引用与传递

asp.net|变量|架构 到公司已经快两个星期了,但是由于客户的需求分析没有下来,所有项目迟迟没有开始.正好利用这个时间仔细研究了一下Asp.net的多层架构,主要参考的是 Wrox 的一本<.Net WebSite Programming Problem-Design-Solution>,个人觉得这本书写的不错.面向有一定.net基础的开发人员,刚开始看起来可能觉得很难懂,但是仔细研究一下会发现,这本书是一本面向工程应用的优秀参考手册. Asp.net的多层架构主要是为了解决数据层,逻辑层