在 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;
?>