在 PHP 中加减乘除以及模运算由 +-*/% 表示,均为中缀二元运算符。

赋值运算符:

  • = : 表示将右侧表达式值赋给左侧的运算数。赋值后左侧值将是右侧值的拷贝。例如 $a = $b;

  • & : 引用,加上 & 后,在赋值时左侧运算数则会和右侧指向同一数据,共享一块内存。例如 $a = &$b;


<?php 
	$a = "meniny";
	echo $a;
	echo "\n";
	$b = $a;
	echo $b;
	echo "\n";
	$c = &$a;
	echo $c;
	echo "\n";
	$a = "MENINY";
	echo $c;
?>

类似的还有 +=-=*=/=%= 等,均为二元中缀运算符。

以及自增与自减运算符: ++--,均为一元后缀运算符。

PHP 也支持位运算:

  • & : 按位与

  • | : 按位或

  • ^ : 按位异或

  • ~ : 按位取反

  • << : 左移

  • >> : 右移

PHP 还提供了一些比较运算符,分别是:

  • == : 中缀二元运算符,左右两边相等(不包括类型)则返回 true

  • === : 中缀二元运算符,左右两边相等(包括类型)则返回 true

  • != : 中缀二元运算符,左右两边不等(不包括类型)则返回 true

  • <> : 中缀二元运算符,左右两边不等(不包括类型)则返回 true

  • !== : 中缀二元运算符,左右两边不等(包括类型)则返回 true

  • > : 中缀二元运算符,左边较大(不包括类型)则返回 true

  • >= : 中缀二元运算符,左右两边相等或左边较大(不包括类型)则返回 true

  • < : 中缀二元运算符,右边较大(不包括类型)则返回 true

  • <= : 中缀二元运算符,左右两边相等或右边较大(不包括类型)则返回 true


<?php 
	var_dump("123" == 123);
	var_dump("123" === 123);
	var_dump("123" != 123);
	var_dump("123" <> 123);
	var_dump("123" < 123);
	var_dump("123" > 123);
	var_dump("123" <= 123);
	var_dump("123" >= 123);
?>

此外 PHP 也提供了三元运算符 (?:),对于表达式 (expr1)?(expr2):(expr3),如果 expr1 的值为 true,则此表达式的值为 expr2,否则为 expr3;


<?php 
	var_dump(true ? "IS TRUE" : "NOT TRUE");
	var_dump(false ? "IS TRUE" : "NOT TRUE");
?>

当然,不能少了逻辑运算符:

  • and : 逻辑与,中缀二元运算符,两侧均为 true 则返回 true

  • && : 逻辑与,中缀二元运算符,两侧均为 true 则返回 true

  • or : 逻辑或,中缀二元运算符,某一侧为 true 则返回 true

  • || : 逻辑或,中缀二元运算符,某一侧为 true 则返回 true

  • xor : 逻辑异或,中缀二元运算符,两侧有且仅有一侧为 true 则返回 true

  • ! : 逻辑非,前缀一元运算符,右侧为 false 则返回 true

对于字符串,前面提到过可以使用 . 符号进行拼接,这里还要介绍另外一个 .= 运算符,用于将两侧内容进行拼接,举个栗子:


<?php 
	$a = "var a ";
	$b = "var b ";
	$c = $a.$b;
	$d = "var d ";
	$d .= $c;
	echo '$a:'.$a."\n";
	echo '$b:'.$b."\n";
	echo '%c=$a.$b:'.$c."\n";
	echo '%d.=$c:'.$d."\n";
?>

还有一个比较特殊的运算符: 错误控制运算符(@),对于一些可能会在运行过程中出错的表达式时,可以将@放置在该表达式之前忽略其产生的错误信息。如果启用 track_error 则这些错误信息会被存放在 $php_errormsg 中,但这个变量的值在每次出错时都会被覆盖掉。

注意:

  • 不能屏蔽解析错误的信息

  • 不能放在函数或类定义前

  • 不能用于条件控制结构


<?php 
	$connection = @mysql_connect("localhost","usr","pwd");
	echo $connection;
	echo $php_errormsg;
?>