1. 赋值运算:= ,意思是右边表达式的值赋给左边的运算数。

$int1=10;
$int1=$int1-6; //$int1=4 echo $int1,"<br>"; $int3=$int2=$int1+4; //右向左,最后$int3=8 echo $int2,"<br>";
echo $int3,"<br>"; $int3=($int2=$int1)+4; //先对()进行运算,再右向左,最后$int3=8 echo $int2,"<br>";
echo $int3,"<br>";

2.将两个变量的值进行互换

$int_x=10;
$int_y=20; $int_x=$int_y+$int_x;
$int_y=$int_x-$int_y;
$int_x=$int_x-$int_y; echo "<hr>";
echo $int_x,"<br>";
echo $int_y,"<br>";

3. 引用赋值

$x=6;
$y=$x;
$z=&$y; //意味着$y,$z两个变量指向了同一个数据

图形描述,左边表示变量,右边表示对应的值,$z=&$y表示$y,$z两个变量指向一个数据6,如C言语中的指针道理,指向同一个地址数据。

echo var_dump($x,$y,$z),"<br>"; 

就会输出:int(6) int(6) int(6)

接下来,改变$x,$y的值,看变化:

$x=4;
$y=8;

echo var_dump($x,$y,$z),"<br>"; 

就会输出:int(4) int(8) int(8)

假如,我们这时候,作如下改变,再看$x,$y,$z的变化:

$x=$y+10;
$y=&$x; //意味着$y的值指向了$x的值,
$z=$y+2;

echo var_dump($x,$y,$z),"<br>"; 

就会输出:int(18) int(18) int(20)

下面,再作一个例子来加深理解:

//为了能清楚的描述,先作释放变量操作
unset($x);
unset($y);
unset($z);
unset($u); $x=1;
$y=2;
$z=3;
$u=&$z; echo "<hr>";
echo var_dump($x,$y,$z,$u),"<br>"; $y=&$x;
$z=&$y;
echo var_dump($x,$y,$z,$u),"<br>"; $y=5;
echo var_dump($x,$y,$z,$u),"<br>"; $u=&$z;
echo var_dump($x,$y,$z,$u),"<br>"; $z=6;
echo var_dump($x,$y,$z,$u),"<br>";

看输出结果:

int(1) int(2) int(3) int(3) 
int(1) int(1) int(1) int(3) 
int(5) int(5) int(5) int(3) 
int(5) int(5) int(5) int(5) 
int(6) int(6) int(6) int(6)

最后列出完整的测试代码:

<?php
// 1. 赋值运算:= ,意思是右边表达式的值赋给左边的运算数。 $int1=10;
$int1=$int1-6; //$int1=4 echo $int1,"<br>"; $int3=$int2=$int1+4; //右向左,最后$int3=8 echo $int2,"<br>";
echo $int3,"<br>"; $int3=($int2=$int1)+4; //先对()进行运算,再右向左,最后$int3=8 echo $int2,"<br>";
echo $int3,"<br>"; // 2.将两个变量的值进行互换
$int_x=10;
$int_y=20; $int_x=$int_y+$int_x;
$int_y=$int_x-$int_y;
$int_x=$int_x-$int_y; echo "<hr>";
echo $int_x,"<br>";
echo $int_y,"<br>"; // 3. 引用赋值
$x=6;
$y=$x;
$z=&$y; //意味着$y,$z两个变量指向了同一个数据
echo "<hr>";
echo var_dump($x,$y,$z),"<br>"; $x=4;
$y=8;
echo var_dump($x,$y,$z),"<br>"; $x=$y+10;
$y=&$x; //意味着$y的值指向了$x的值,
$z=$y+2;
echo var_dump($x,$y,$z),"<br>"; //-----------------------
//为了能清楚的描述,先作释放变量操作
unset($x);
unset($y);
unset($z);
unset($u); $x=1;
$y=2;
$z=3;
$u=&$z; echo "<hr>";
echo var_dump($x,$y,$z,$u),"<br>"; $y=&$x;
$z=&$y;
echo var_dump($x,$y,$z,$u),"<br>"; $y=5;
echo var_dump($x,$y,$z,$u),"<br>"; $u=&$z;
echo var_dump($x,$y,$z,$u),"<br>"; $z=6;
echo var_dump($x,$y,$z,$u),"<br>"; ?>

(完.)

PHP赋值运算的更多相关文章

  1. js赋值运算的理解

    简介 js引擎由于为了效率,很多时候的非直接量赋值都不是copy一份在赋值给新的变量,而是一个引用 ps:直接量:直接值数字字符串等 为什么使用len = doms.length; 里的len效率要比 ...

  2. 使用C/C++,赋值运算时发生的转换

    使用C/C++,赋值运算时发生的转换主要有以下四种情况 一: 两边类型不同: 结果: 自动完成类型转换! 二: 长数赋给短数: 结果: 截取长数的低位送给短数! 三: 短数赋给长数: 结果: 原来是什 ...

  3. C++中的构造函数,拷贝构造函数和赋值运算

    关于C++中的构造函数,拷贝构造函数和赋值运算,以前看过一篇<高质量C++/C编程指南>的文章中介绍的很清楚,网上能搜索到,如果想详细了解这方面的知识可以参看一下这篇文章. 常见的给对象赋 ...

  4. ecos3.0编译 if_lancepci.c:528: 错误: 赋值运算的左操作数必须是左值

    /home/xin/ecos3/ecos-3.0/packages/devs/eth/amd/lancepci/v3_0/src/if_lancepci.c:528: 错误: 赋值运算的左操作数必须是 ...

  5. 算术运算,赋值运算,if语句,while,continue语句

    算术运算 print(10 / 3)=3.333333333333 print(10 // 3)=3 print(10 ** 2)=100 赋值运算增量赋值 age=18 age+=1 print(a ...

  6. 【学习笔记】--- 老男孩学Python,day3 while 循环 运算符 逻辑、赋值运算

    1. 循环. while循环 while 条件: 代码块(循环体) 执行流程: 1. 判断条件是否为真. 如果真. 执行代码块 2. 再次判断条件是否为真...... 3. 当条件为假.执行else ...

  7. 总结day5 ---- ,字典的学习,增删改查,以及字典的嵌套, 赋值运算

    内容大纲: 一:字典的定义 二:字典的增加 >1:按照key增加,  无则增加,有则覆盖 >2:setdefault()  ,无则增加,有则不变 三:字典的删除 >1:pop()  ...

  8. 关于java赋值运算的一个小例子

    直接贴代码,这个也是做题目中遇见的,觉得很好奇,查了一波,然后自己编写代码看了一下,果真如此,哈哈哈...... public class 关于Boolean的赋值运算 { public static ...

  9. 《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记

    章节回顾: <Effective C++>第1章 让自己习惯C++-读书笔记 <Effective C++>第2章 构造/析构/赋值运算(1)-读书笔记 <Effecti ...

随机推荐

  1. Akka.net路径里的user

    因为经常买双色球,嫌每次对彩票号麻烦,于是休息的时候做了个双色球兑奖的小程序,做完了发现业务还挺复杂的,于是改DDD重做设计,拆分服务,各种折腾...,不过这和本随笔没多大关系,等差不多了再总结一下, ...

  2. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  3. 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器

    LoT.UI汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui 上次说的是强大的百度编辑器 http://www.cnblogs.com/d ...

  4. JavaScript Array对象

    介绍Js的Array 数组对象. 目录 1. 介绍:介绍 Array 数组对象的说明.定义方式以及属性. 2. 实例方法:介绍 Array 对象的实例方法:concat.every.filter.fo ...

  5. Android raw to bmp

    Android raw 格式转 bmp 图像 raw 保存的为裸数据,转换时都需要把它转成RGBA 的方式来显示.其中: 8位RAW: 四位RGBA 来表示一位灰度; 24位RAW: 三位RGB相同, ...

  6. 利用XAG在RAC环境下实现GoldenGate自动Failover

    概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...

  7. C# BackgroundWorker 详解

    在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题.解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完 ...

  8. IOS开发基础知识--碎片51

    1:https关闭证书跟域名的验证 AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy]; securityPolic ...

  9. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

  10. D3.js学习(六)

    上节我们学习了如何绘制多条曲线, 以及给不同的曲线指定不同的坐标系.在这节当中,我们会对坐标轴标签相关的处理进行学习.首先,我们来想一个问题, 如何我们的x轴上的各个标签的距离比较近,但是标签名又比较 ...