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. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  2. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

  3. 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了

    前言: 不要问我框架为什么从收费授权转到免费开源,人生没有那么多为什么,这些年我开源的东西并不少,虽然这个是最核心的,看淡了就也没什么了. 群里的网友:太平说: 记得一年前你开源另一个项目的时候我就说 ...

  4. TSQL Identity 用法全解

    Identity是标识值,在SQL Server中,有ID列,ID属性,ID值,ID列的值等术语. Identity属性是指在创建Table时,为列指定的Identity属性,其语法是:column_ ...

  5. 使用Java原生代理实现AOP

    ### 本文由博主柒.原创,转载请注明出处 ### 完整源码下载地址 [https://github.com/MatrixSeven/JavaAOP](https://github.com/Matri ...

  6. Android学习探索之Java 8 在Android 开发中的应用

    前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...

  7. 【开源】.Net 动态脚本引擎NScript

    开源地址: https://git.oschina.net/chejiangyi/NScript 开源QQ群: .net 开源基础服务  238543768 .Net 动态脚本引擎 NScript   ...

  8. TypeScript Vs2013 下提示Can not compile modules unless '--module' flag is provided

    VS在开发TypeScript程序时候,如果import了模块有的时候会有如下提示: 这种情况下,只需要对当前TypeScript项目生成设置为AMD规范即可!

  9. CRL快速开发框架系列教程十三(嵌套查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  10. C++随笔:.NET CoreCLR之GC探索(2)

    首先谢谢 @dudu 和 @张善友 这2位大神能订阅我,本来在写这个系列以前,我一直对写一些核心而且底层的知识持怀疑态度,我为什么持怀疑态度呢?因为一般写高层语言的人99%都不会碰底层,其实说句实话, ...