php 运算符优先级

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

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教程 session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</HEAD>
<?php include 'conf/conn.php';?>
<div id="wrapper">
<div id="header"><h1>留言管理 </h1></div><h2>
<?php echo "你好!管理员:".@$_SESSION['name']."  <a href='login.php'>退出</a>";?></h2>
<div  id="listDiv">
<form method="POST" action="" name="listForm">
<table>
  <tr>
    <td><input onclick='listTable.selectAll(this, "checkboxes")' type="checkbox"> ID号</td><td>用户名</td><td>标题</td><td>内容</td>
  </tr>
 
<?php //数据库教程查找返回数组
$result_gl = mysql教程_query("SELECT * FROM message");
while($row = mysql_fetch_array($result_gl)){
?>
  <tr>
    <td><input type="checkbox" name="checkboxes[]" /></td>
    <td> <?php echo $row['id']?></td>
    <td ><?php echo $row['user'];?></td>
    <td><?php echo $row['title']?></td>
    <td><?php echo $row['content']?></td>
  </tr>  
<?php
}
?>
  <tr>
  <td><input type="submit" name="delet" value="删除留言" /></td>
  </tr>
</table>
</div>
</form>
<?php
include 'END.php';
?>
</div>
</body>
</html>

实例方法

$ids=$_POST['ids'];
$where="";
foreach($ids as $key => $val) {
                if(!empty($where)){
                                $where.=", '".$val."'";
        }else{
                $where.="'".$val."'";
        }
}

mysql_query("DELETE FROM message where id in ($where)");

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教程 比较运算符
   比较运算就是两个值进行比较,体现两个数之间的关系。
      例子                   名称              结果
   $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)

[!--infotagslink--]

相关文章

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

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

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • 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
  • c#的异或运算符介绍

    这篇文章介绍了c#的异或运算符,有需要的朋友可以参考一下...2020-06-25
  • 轻松学习C#的运算符

    轻松学习C#的运算符,对C#的运算符感兴趣的朋友可以参考本篇文章,帮助大家更灵活的运用C#的运算符。...2020-06-25
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

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

    这只我自己在学C#中的一些总结,其中对于各级的划分方式、各操作符的优先级的理解并不见得正确,只是自己的看法,拿出来与大家分享...2020-06-25
  • 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
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • C++编程中的或||、与&&、非!逻辑运算符基本用法整理

    这篇文章主要介绍了C++中的或||、与&&、非!逻辑运算符基本用法整理,是C++入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • PHP+jQuery+Ajax实现多图片上传效果

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

    这篇文章主要介绍了JS不要再到处使用绝对等于运算符了,对此感兴趣的同学,可以参考下...2021-05-01
  • C#编程自学之运算符和表达式

    这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP如何使用cURL实现Get和Post请求

    这篇文章主要介绍了PHP如何使用cURL实现Get和Post请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-11
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12