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)