php 赋值运算符

 更新时间:2016年11月25日 15:08  点击:1602

php教程 赋值运算符
 基本的赋值运算符是“=”。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。

赋值运算表达式的值也就是所赋的值。也就是说,“$a = 3”的值是 3。这样就可以做一些小技巧:

<?php

$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。

?>

    

<?php
$a=10;
$b=20;
echo $a += $b;     //等同于 $a = $a + $b    10+20=30
echo "<br/>";

echo $a -= $b;    //等同于$a = $a - $b      30-20=10
echo "<br/>";

echo $a *= $b;     //等同于$a = $a * $b     10*20=200
echo "<br/>";

echo $a /= $b;     //等同于$a = $a / $b    200/20=10
echo "<br/>";

echo $a %= $b;     //等同于$a = $a % $b    10%20=10
echo "<br/>";

//See the String Operators page
echo $a .= $b;     //等同于$a = $a . $b     10.20=1020
echo "<br/>";

$a=true;
$b=false;
//See the Bitwise Operators page 
echo $a &= $b;     //等同于$a = $a & $b      0      true&false=false
echo "<br/>";

echo $a |= $b;     //等同于$a = $a | $b      0      false|false=false
echo "<br/>";

echo $a ^= $b;     //等同于$a = $a ^ $b      0      false^false=false
echo "<br/>";

$a=1;
$b=2;
echo $a <<= $b;     //等同于$a = $a << $b       1<<2=4
echo "<br/>";

echo $a >>= $b;     //等同于$a = $a >> $b       4>>2=1
echo "<br/>";
?>
   
在基本赋值运算符之外,还有适合于所有二元算术,数组集合和字符串运算符的“组合运算符”,这样可以在一个表达式中使用它的值并把表达式的结果赋给它,例如:

<?php

$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";

?>

注意赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中一个并不影响另一个。这也适合于在很密集的循环中拷贝一些值例如大数组。也可以使用引用赋值,用 $var = &$othervar; 语法。引用赋值意味着两个变量都指向同一个数据,没有任何数据的拷贝。有关引用的更多信息见引用的说明。在 PHP 5中,对象总是通过引用赋值的,除非明确使用新的 clone关键字。

php教程 运算符优先级:
    先算乘除后算加减,遇到括号先算括号内
 运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。如果运算符优先级相同,则使用从左到右的左联顺序
  
运算符优先级 结合方向 运算符 附加信息
非结合 clone new clone 和 new
左 [ array()
非结合 ++ -- 递增/递减运算符 
非结合 ~ - (int) (float) (string) (array) (object) (bool) @ 类型 
非结合 instanceof 类型 
右结合 ! 逻辑操作符 
左 * / % 算术运算符 
左 + - . 算术运算符和字符串运算符
左 << >> 位运算符 
非结合 < <= > >= <> 比较运算符 
非结合 == != === !== 比较运算符 
左 & 位运算符和引用
左 ^ 位运算符 
左 | 位运算符 
左 && 逻辑运算符 
左 || 逻辑运算符 
左 ? : 三元运算符 
右 = += -= *= /= .= %= &= |= ^= <<= >>=  赋值运算符 
左 and 逻辑运算符 
左 xor 逻辑运算符 
左 or 逻辑运算符 
左 , 多处用到


 例子        名称     结果
 -$a        取反     $a 的负值。
 $a + $b   加法     $a 和 $b 的和。
 $a - $b    减法     $a 和 $b 的差。
 $a * $b    乘法     $a 和 $b 的积。
 $a / $b    除法     $a 除以 $b 的商。
 $a % $b   取模     $a 除以 $b 的余数。

<?php
$a=10;
$b=20;
echo -$a;        //取反   $a 的负值。               -10
echo "<br/>";

echo $a+$b;     //加法   $a 和 $b 的和。        30
echo "<br/>";

echo $a-$b;     //减法   $a 和 $b 的差。        -10
echo "<br/>";

echo $a*$b;     //乘法   $a 和 $b 的积。            200
echo "<br/>";

echo $a / $b;    //除法   $a 除以 $b 的商。          0.5
echo "<br/>";

echo $a % $b;    //取模   $a 除以 $b 的余数。    10
echo "<br/>";
?>

<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>

php教程 比较运算符
   比较运算就是两个值进行比较,体现两个数之间的关系。
      例子                   名称              结果
   $a == $b      等于 TRUE,   如果 $a 等于 $b。
   $a === $b   全等 TRUE,   如果 $a 等于 $b,并且它们的类型也相同。
   $a != $b    不等 TRUE,   如果 $a 不等于 $b。
   $a <> $b    不等 TRUE,    如果 $a 不等于 $b。
   $a !== $b   非全等 TRUE,   如果 $a 不等于 $b,或者它们的类型不同。
   $a < $b    小与 TRUE,    如果 $a 严格小于 $b。
   $a > $b    大于 TRUE,    如果 $a 严格 $b。
   $a <= $b   小于等于 TRUE,   如果 $a 小于或者等于 $b。
   $a >= $b     大于等于 TRUE,   如果 $a 大于或者等于 $b。

<?php
$a=10;
$b=10;
echo $a== $b;      //$a==$b吗?     10==10  返回1   True
echo "<br/>";

echo $a === $b;    //$a===$b吗?   10===10 返回1   True
echo "<br/>"; 

$b="10";
echo $a === $b;    //$a===$b吗?    10==="10" 返回空   false  比较两数据,不但比较数据值还有比较数据类型;
echo "<br/>";

$A=10;
$B=20;
echo $A!=$B;        //$a 不等于 $b     10!=20  返回1   True
echo "<br/>";

echo $A<>$B;        //$a 不等于 $b     100<>20 返回1   True
echo "<br/>";
 
echo $A!==$B;        //$a 不等于 $b,或者它们的类型不同。10!==20  返回1   True
echo "<br/>";

$C="10";
echo $A!==$C;        //非全等 $a 不等于 $b,或者它们的类型不同。10!=="10" 返回空   false
echo "<br/>";

echo $A<$B;        // $a 严格小于 $b   10<20 返回1   True
echo "<br/>";

echo $A>$B;        // $a 严格小于 $b   10>20 返回空   false
echo "<br/>";

echo $A<=$B;        // $a 小于或者等于 $b   10<=20 返回1   True
echo "<br/>";

echo $A>=$B;        // $a 大于或者等于 $b   10>=20 返回空   false
echo "<br/>";
?>

比较多种类型 运算数 1 类型 运算数 1 类型 结果
null 或 string string 将 NULL 转换为 "",进行数字或词汇比较
bool 或 null 任何其它类型 转换为 bool,FALSE < TRUE
object object 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 
string,resource 或 number string,resource 或 number 将字符串和资源转换成数字,按普通数学比较
array array 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) 
array 任何其它类型 array 总是更大
object 任何其它类型 object 总是更大

php教程 逻辑运算符
         例子                 名称                  结果
  $a and $b   And(逻辑与)    TRUE,如果 $a 与 $b 都为 TRUE。
  $a or $b   Or(逻辑或)     TRUE,如果 $a 或 $b 任一为 TRUE。
  $a xor $b   Xor(逻辑异或)  TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
  ! $a             Not(逻辑非)        TRUE,  如果 $a 不为 TRUE。
  $a && $b   And(逻辑与)   TRUE,如果 $a 与 $b 都为 TRUE。
  $a || $b   Or(逻辑或)     TRUE,如果 $a 或 $b 任一为 TRUE。

<?php
$a=true;
$b=false;

echo "And(逻辑与)";     //TRUE,如果 $a 与 $b 都为 TRUE
echo  $a and $b;   //返回 空  false;

echo "Or(逻辑或)";      //TRUE,如果 $a 与 $b 都为 TRUE
echo  $a or  $b;   //返回 1  TRUE;

echo "Xor(逻辑异或)";   //TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是
echo  $a xor  $b;        //返回 1  TRUE;

echo "Not(逻辑非)";    //TRUE,  如果 $a 不为 TRUE
echo  !$a;               //返回 空  false;

echo "And(逻辑与)";      //TRUE,如果 $a 与 $b 都为 TRUE
echo  $a &&  $b;          //返回 空  false;

echo "Or(逻辑或)";       //TRUE,如果 $a 或 $b 任一为 TRUE
echo  $a ||  $b;           //返回 1  TRUE;
?>

<?php

// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:"=" 的优先级比 "or" 高]
var_dump($e, $f);

// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:"=" 的优先级比 "and" 高]
var_dump($g, $h);
?>
以上例程的输出类似于:

bool(true)
bool(false)
bool(false)
bool(true)

php教程 递增/递减运算符


只操作变量的一种运算

递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。

 
例子      名称     效果
 ++$a    前加    $a 的值加一,然后返回 $a。
 $a++    后加    返回 $a,然后将 $a 的值加一。
 --$a     前减     $a 的值减一, 然后返回 $a。
 $a--     后减     返回 $a,然后将 $a 的值减一。

<?php

$a=1;
echo "前加";     //$a 的值加一,然后返回 $a
echo  ++$a;   //显示值  2   

$a=1;
echo "后加";     //返回 $a,然后将 $a 的值加一
echo  $a++;   //显示值   1   

$a=2;
echo "前减";     //$a 的值减一, 然后返回 $a
echo  --$a;   //显示值  1   

$a=2;
echo "前减";     //$返回 $a,然后将 $a 的值减一
echo  $a--;   //显示值  2   
?>


<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br />n";
echo "Should be 6: " . $a . "<br />n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br />n";
echo "Should be 6: " . $a . "<br />n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br />n";
echo "Should be 4: " . $a . "<br />n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br />n";
echo "Should be 4: " . $a . "<br />n";
?>

[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • php数组操作 键名比较 差集 交集赋值

    本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vue 数据(data)赋值问题的解决方案

    这篇文章主要介绍了vue 数据(data)赋值问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • c#的异或运算符介绍

    这篇文章介绍了c#的异或运算符,有需要的朋友可以参考一下...2020-06-25
  • java中String类型变量的赋值问题介绍

    下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28
  • 轻松学习C#的运算符

    轻松学习C#的运算符,对C#的运算符感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的运算符。...2020-06-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • C#中38个常用运算符的优先级的划分和理解

    这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享...2020-06-25
  • python 实现循环定义、赋值多个变量的操作

    这篇文章主要介绍了python 实现循环定义、赋值多个变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • R语言运算符知识点讲解

    在本篇文章里小编给大家分享了一篇关于R语言运算符知识点讲解内容,有兴趣的朋友们可以参考下。...2021-05-06
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • react使用antd表单赋值,用于修改弹框的操作

    这篇文章主要介绍了react使用antd表单赋值,用于修改弹框的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15