2018/03/20 变量引用-对象引用

就目前的工作中的话,很少.

--

变量的引用

$a = ‘a‘;

$b = ‘b‘;

$c = &$a;

echo $a; // 输出 a
echo $b; // 输出 b
echo $c; // 输出 a

$a = ‘c‘;

echo $c; // 输出 c

PHP 的引用允许你用两个变量来指向同一个内容

$a 和 $c 共用的是同一份内存空间

--

函数的传址调用 传址调用我就不多说了 下面直接给出代码

function test (&$a) {
    $a = $a + 100;
}
$b = 1;

test($b); 

echo $b; // 输出101

如果你想修改全局变量,光写一个函数是不行的。

由于函数作用域,无法修改全局变量,所以使用 函数传址调用 可以修改全局变量

--

对象引用

class a{
    var $abc="ABC";
}
$b=new a;
$c=$b;
echo $b->abc;//这里输出ABC
echo $c->abc;//这里输出ABC $b->abc="DEF";
echo $c->abc;//这里输出DEF

以上代码是在PHP5中的运行效果 在PHP5中 对象的复制是通过引用来实现的

  上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b; PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone.

--

引用的作用

  如果在你的程序中,应用一个对象变量很多。并且希望使用完成后清除,个人建议用 "&" 方式,然后用$var=null的方式清除.

--

清除引用

$a = 1;
$b =& $a;
unset ($a);echo $b; // 输出 1

是不是有点奇怪,明明他的引用已经被销毁了,怎么$b还有值?

当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。

PHP 会在删除变量的时候,会自动拷贝。

其实这样子,就是为了避免把$a给删掉,造成把$b也给删掉的问题。

参考日志:

  https://www.cnblogs.com/thinksasa/p/3334492.html

  https://www.cnblogs.com/wangtao_20/p/3411835.html

原文地址:https://www.cnblogs.com/25-lH/p/8608477.html

时间: 2024-08-01 16:29:44

2018/03/20 变量引用-对象引用的相关文章

20172319 2018.03.12-19 《程序设计与数据结构》第2周学习总结

学号 20172319 2018.03.12-19 <程序设计与数据结构>第2周学习总结 教材学习内容总结 1.字符串:基本定义:print与println方法的区别:字符串的拼接:转义序列的应用. 2.变量与赋值:变量:常量:赋值语句. 3.基本数据类型:四整二浮点一字符一布尔. 4.表达式:运算符的种类及其使用规则. 5.数据类型转换:基本数据类型间的转换(扩展及压缩):数据转换方式:赋值(只能扩展).提升.强制. 6.交互式程序:Scanner 类. 教材学习中的问题和解决过程 问题1:

20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中的声明的变量所定义.对象的操作可能改变该对象的状态.对象的操作由 类中声明的方法定义. 类的分析:类的成员(类的数据和方法):构造方法(给类赋初值):实例数据(变量声明的位置定义其作用域):UML类图(类及其对象关系可视化描述). 封装:(1) 可见性修饰符:public(公有):private(私有,只能从

Ansible系列(六):各种变量定义方式和变量引用

本文目录:1.1 ansible facts1.2 变量引用json数据的方式 1.2.1 引用json字典数据的方式 1.2.2 引用json数组数据的方式 1.2.3 引用facts数据1.3 设置本地facts1.4 输出和引用变量1.5 注册和定义变量的各种方式 1.5.1 register注册变量 1.5.2 set_fact定义变量 1.5.3 vars定义变量 1.5.4 vars_files定义变量 1.5.5 roles中的变量 1.5.6 命令行传递变量 1.5.7 inve

【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】

--------– 2018.03.27 更新--------- 便携版已更新,点此获取便携版 已知BUG:中文目录无法正常调试 用于cpptools 0.15.0插件的配置文件更新 新的launch.json // Available variables which can be used inside of strings. // ${workspaceRoot}: the root folder of the team // ${file}: the current opened file

C++ 指针 引用 变量引用

变量引用: 引用的作用就是给变量起个别名,假如有一个变量a,想给它起个别名b,         可以这么写:int a;//定义a是整型变量.int &b=a;//声明b是a的引用. 上面就是b是a的引用,即b是a的别名.在上面“&”是引用声明符,并不代表地址.a和b占同一个地址空间和内存单元.声明b是a的引用,可以理解为:使变量b具有变量a的地址. 引用作为函数参数: C++之所以增加引用机制,主要是把它作为函数参数,以扩充函数传递数据的功能. 函数参数传递的两种情况: 1.将变量名作为

sdut 面向对象程序设计上机练习四(变量引用)

面向对象程序设计上机练习四(变量引用) Time Limit: 1000MS Memory limit: 65536K 题目描写叙述 将变量的引用作为函数形參,实现2个int型数据交换. 输入 输入2个int型整数. 输出 输出2个整数交换前后的值. 演示样例输入 88 66 演示样例输出 88 66 66 88 把变量的引用作为函数形參,即传送变量的别名. #include <iostream> using namespace std; //"引用形參"交换函数 void

第23课:用户变量和变量引用

用户变量 编写批处理程序时,用户根据需要自己定义的变量称之为用户变量.用户变量类似于C语言里面的变量,仅仅在定义该变量的程序中有效. 用户变量由set命令定义,这是批处理中非常非常重要的一个操作,从而使set命令成为批处理里面使用频率最高的几个命令之一.关于set命令的使用,参考set /?,本教程也会在后面对其进行讲解. 变量引用 前面的几节课里面,我们已经看到了如何引用变量,即直接用变量名操作变量,通过"%"或"!"来获取变量的值.其中,只有在for语句里面重复

变量引用的错误:UnboundLocalError: local variable &#39;range&#39; referenced before assignment

1 class Battery(): 2 """一次模拟电动汽车电瓶的简单尝试""" 3 def __init__(self,battery_size=70): 4 self.battery_size = battery_size 5 # self.range =range 6 def describe_battery(self): 7 print(self.battery_size) 8 9 def get_range(self): 10 pr

JavaScript中var变量引用function与直接声明function

今天在h5开发app的过程中遇到了一个js问题,function的执行问题 在js中声明函数function有这两种方法 var A=function(){...} 或者 function A(){...} 第一种称之为变量引用函数,因为js允许函数作为一个值传递给变量,第二种是直接声明式函数 一直以为这两种没什么区别,然而,今天在使用过程中发现,当我使用第一种方式声明function的时候,如果如下这样: document.getElementById("xx").addEventL