细说PHP-5.3.4变量的引用赋值
变量总是传值赋值。也就是说,当讲一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,当一个变量的值赋予另个一变量时,改变其中一个变量的值,将不会影响到另一个变量。PHP中提供了另一种方式给变量赋值:引用赋值。这意味着新的变量简单地引用了原始变量。改动新的变量将影响到原始变量,反之亦然。这同样意味着其中没有执行赋值操作,因而,这种赋值操作更加快速。不过只有在密集的循环中或者对很大的数组或对象赋值时才有可能注意到速度的提升。使用引用赋值,简单地将一个“&”符号加到要赋值的变量(源变量)前。例如下列代码片段所示:
<?php
$foo = 'Bob'; //将字符串"Bob"赋给变量$foo
$bar = &$foo; //将变量$foo的引用赋值给变量$bar $bar = "My name is Tom"; //改变变量$bar的值
echo $bar; //变量$bar的值被改变,输出"My name is Tom"
echo $foo; //变量$foo的值也被改变,输出"My name is Tom" $foo = "your name is Bob"; //改变变量$foo的值
echo $bar; //变量$bar的值也被改变,输出"your name is Bob"
echo $foo; //变量$foo的值被改变,输出"your name is Bob"
?>
在上面个的代码中,我们并不是将变量$foo的值赋值给变量$bar,而是将$foo的引用赋值给$vbar,这时,$bar相当于是$foo的别名。只要其中的任何一个有所改变,都会影响到另一个变量。有一点重要事项必须指出,那就是只有有名字的变量才可以引用赋值。如下所示:
1 <?php
2 $foo = 25;
3 $bar = &$foo; //这是一个有效地引用赋值
4 $bar = &(24*7); //此引用赋值无效,不能引用表达式做引用赋值
5
6 function test() {
7 return 25;
8 }
9 $bar = &test(); //此引用赋值无效,也是没有名字的变量
10 ?>
细说PHP-5.3.4变量的引用赋值的更多相关文章
- PHP变量传值赋值和引用赋值,变量销毁
<?php $a = 100; $b = 200; var_dump($a,$b); //int(100) int(200) ?> php中,上面的代码,变量是怎么存放的呢? 上面的代码变 ...
- PHP:第一章——php中的变量001 /普通赋值/引用赋值/php变量的检查与销毁
<?php //php中的变量: //php中的变量用一个美元符$后面紧跟着变量名来表示,变量名是区分大小写的. //有效的变量只能是字母或者下划线开头,后面跟任意数量的字母.数字.或者下划线. ...
- Makefile笔记之一 ------ 变量的引用及赋值
1.变量的引用方式: "$(变量名)"或者"¥{变量名}" 例如: ${Objs}就是取变量Objs的值 注意: 当变量名为单字符是可以采用:"$a& ...
- GNU make使用变量⑤变量的引用、定义等
在 Makefile 中,变量是一个名字(像是 C 语言中的宏),代表一个文本字符串(变量的值).在 Makefile 的目标.依赖.命令中引用变量的地方,变量会被它的值所取代(与 C 语言中宏引用的 ...
- Python中的变量、引用、拷贝和作用域
在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...
- 深入理解PHP原理之变量分离/引用
19 Sep 08 深入理解PHP原理之变量分离/引用(Variables Separation) 作者: Laruence( ) 本文地址: http://www.laruence.com/20 ...
- c++变量的引用---5
原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 1.引用变量的主要用途: 用作函数的形参,通过将引用变量用作参数,函数将使用原始数据而不是其拷贝. 2. ...
- CI源码引用使用--php引用demo,静态变量和引用关系
CI源码引用使用在Common.php中,加载配置和类的方法 function &test() { static $a = ''; if (!$a) { $a ...
- php变量的引用及函数的引用
Php变量的引用及函数的引用放回 变量的引用 $a="ABC"; $b =&$a; echo $a;//这里输出:ABC echo $b;//这里输 ...
随机推荐
- mq4参考
更新: 2017/05/24 其实也就是照搬文档,主要是用到一个记一个.方便掌握 ----------------------------------------------------------- ...
- 关于TImer使用的注意
晚点再写 停止Timer let timer = .... timer.invalidate()
- HDU6050: Funny Function(推公式+矩阵快速幂)
传送门 题意 利用给出的式子求\(F_{m,1}\) 分析 直接推公式(都是找规律大佬) \(n为偶数,F_{m,1}=\frac{2(2^n-1)^{m-1}}3\) \(n为奇数,F_{m,1}= ...
- python 面向对象十二 元类
一.类也是对象 只要使用关键字class,Python解释器在执行的时候就会创建一个对象.下面的代码段: class ObjectCreator(object): pass 将在内存中创建一个对象,名 ...
- bzoj 1176 [Balkan2007]Mokia 【CDQ分治】
W过大,很难在线维护,考虑离线算法 给每个操作加一个时间属性n,显然,对于n=i的询问,对它有影响的修改只在n<i中,所以可以CDQ(因为是按时间序读进来的,所以不用排序了 对于统计矩形和,可以 ...
- springcloud(二) 负载均衡器 ribbon
代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo ribbon是一个负载均衡客户端 类似nginx反向代理,可 ...
- Python中lambda表达式的应用
lambda表达式 Python中定义了一个匿名函数叫做lambda表达式,个人理解实现的作用就是代替一些简单的函数,使得代码看上去更简洁并且可读性高.举个例子,我们有一个元组列表[(‘a’,1),( ...
- (四)SpringBoot如何定义消息转换器
一:添加fastjson依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastj ...
- vue移动端开发全家桶
一句命令搞定全家桶: npm install vue-router vue-resource vuex --save main.js配置: import Vue from 'vue' impor ...
- PostgreSQL - 允许远程访问的设置方法
原文转载至:PostgreSQL 允许远程访问设置方法 安装PostgreSQL数据库之后,默认是只接受本地访问连接.如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置. 配 ...