运算符:
算术运算符
PHP有6种最基本的算术运算符:加(+)、减()、乘(*)、除(/)、取模(%)、取反()。例如:
<?php
$a=10;
$b=3;
$num=$a+$b; //加法,$num值为13
$num=$a$b; //减法,$num值为7
$num=$a*$b; //乘法,$num值为30
$num=$a/$b; //除法,$num值为3.333333…
$num=$a%$b; //取模,$num值为1
$num=$a; //取反,$num值为10
?>
赋值运算符的作用是将右边的值赋给左边的变量,最基本的赋值运算符是“=”。如“$a=3”表示将3赋给变量$a,变量$a的值为3。
由“=”组合的其他赋值运算符形成的扩展赋值运算符有“+=”、“=”、“*=”、“/=”、“.=”等。
例如:
<?php
$a=10;
$b=3;
$num=$a+$b; //将$a+$b的结果值赋给$num,$num值为13
$num=($c=6)+4 //$c的值为6,$num的值为10
$a+=6; //等同于$a=$a+6,$a赋值为16
$b=2; //等同于$b=$b2,$b赋值为1
$a*=2; //等同于$a=$a*2,$a赋值为32
$b/=0.5; //等同于$b=$b/0.5,$b赋值为2
$string="连接";
$string.="字符串"; //等同于$string=$string."字符串",$string赋值为"连接字符串"
?>
位运算符可以操作整型和字符串型两种类型数据。它操作整型数的指定位置位,如果左、右参数都是字符串,则位运算符将操作字符的ASCII值。下表列出了所有的位运算符及其说明。
位运算符 | 名 称 | 例 子 | 结 果 |
& | 按位与 | $a & $b | 将$a和$b中都为1的位设为1 |
| | 按位或 | $a | $b | 将$a或$b中为1的位设为1 |
^ | 按位异或 | $a ^ $b | 将$a和$b中不同的位设为1 |
~ | 按位非 | ~ $a | 将$a中为0的位设为1,反之亦然 |
<< | 左移 | $a << $b | 将$a中的位向左移动$b次(每一次移动都表示“乘以 ) |
>> | 右移 | $a >> $b | 将$a中的位向右移动$b次(每一次移动都表示“除以 ) |
比较运算符用于对两个值进行比较,不同类型的值也可以进行比较,如果比较的结果为真则返回TRUE,否则返回FALSE。下表列出了所有的比较运算符及其说明。
比较运算符 | 名 称 | 例 子 | 结 果 |
== | 等于 | $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 |
说明:要注意,如果整数和字符串进行比较,字符串会被转换成整数;如果比较两个数字字符串,则作为整数比较。其他类型之间的比较请参照下表
运算数1的类型 | 运算数2的类型 | 结 果 |
null 或 string | string | 将NULL转换为"",进行数字比较 |
bool 或 null | 任何其他类型 | 转换为bool,FALSE < TRUE |
object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4中),PHP 5有自己的说明 |
string或resource | string或resource | 将字符串和资源转换成数字,按普通数字比较 |
array | array | 具有较少成员的数组较小,如果运算数1中的键不存在于运算数2中,则数组无法比较,否则逐个值比较 |
array | 任何其他类型 | array 总是更大 |
object | 任何其他类型 | object 总是更大 |
错误控制运算符:
PHP支持错误控制运算符@,将其放置在PHP表达式之前,该表达式可能产生的任何错误信息都将被忽略。例如:
<?php
echo $a; //变量$a未定义,不加@会显示NOTICE信息
$a="Hello!";
echo $a; //输出"Hello!"
$b=@test(); //忽略调用test()函数时产生的错误信息
$cnn=@mysql_conncet("localhost","username","pwd");
//忽略连接mysql数据库出错产生的错误信息
?>
当程序产生错误时,PHP会将错误信息输出到屏幕上,使用错误控制运算符后就不再显示这些错误信息了。由于错误控制运算符只对表达式有效,可以将它放在变量、函数、常量等之前,而不能将它放在函数的定义或类的定义之前,也不能用于条件结构,如if和foreach等。
执行运算符:
PHP支持一个执行运算符,即反引号(``)。在PHP脚本中,将外部程序的命令行放入反引号中,并使用echo()或print()函数将其显示,PHP将会在到达该行代码时启动这个外部程序,并将其输出信息返回,其作用效果与shell_exec()函数相同。例如:
<?php
$output='date';
echo $output; //输出当前日期
echo shell_exec(`date`); //输出当前日期,结果同上
?>
注意:
反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。
与其它某些语言不同,反引号不能在双引号字符串中使用。
PHP支持C语言风格的自增与自减运算符。PHP的自增/自减运算符主要是对整型数据进行操作,同时对字符也有效。这些运算符是前加、后加、前减和后减。前加是在变量前有两个“+”号,如“++$a”,表示$a 的值先加1,然后返回 $a。后加的“+”在变量后面,如“$a++”,表示先返回$a,然后$a的值加1。前减和后减与加法类似。例如:
<?php
$a=5; //$a赋值为5
echo ++$a; //输出6
echo $a; //输出6
$a=5;
echo $a++; //输出5
echo $a; //输出6
$a=5;
echo --$a; //输出4
echo $a; //输出4
$a=5;
echo $a--; //输出5
echo $a; //输出4
?>
PHP还可对字符进行递增运算。
在PHP中,字符变量只能递增,递减没有效果。例如:
<?php
$a='a';
echo ++$a; //输出'b'
$a='z';
echo ++$a; //输出'aa'
$a='b';
echo --$a; //递减无效,输出'b'
?>
逻辑运算符可以操作布尔型数据,PHP中的逻辑运算符有6种,下表列出了所有的逻辑运算符及其说明。
逻辑运算符 | 名 称 | 例 子 | 结 果 |
and | 逻辑与 | $a and $b | TRUE,如果 $a 与 $b都为TRUE |
or | 逻辑或 | $a or $b | TRUE,如果 $a 或 $b任意一个为TRUE |
xor | 逻辑异或 | $a xor $b | TRUE,如果 $a 或 $b任意一个为TRUE,但不同时是 |
! | 逻辑非 | ! $a | TRUE,如果 $a 不为TRUE |
&& | 逻辑与 | $a && $b | TRUE,如果 $a 与 $b都为TRUE |
|| | 逻辑或 | $a || $b | TRUE,如果 $a 或 $b中任意一个为TRUE |
例如:
<?php
$m=10;
$n=6;
if($m>5&&$n<=8) //判断$m>5和$n<=8是否都是TRUE
{
echo "YES!"; //输出'YES!'
}
?>
字符串运算符主要用于连接两个字符串,PHP有两个字符串运算符“.”和“.=”。“.”返回左、右参数连接后的字符串,“.=”将右边参数附加到左边参数后面,它可看成赋值运算符。
例如:
<?php
$a="Hello ";
$b="World";
echo $a.$b; //输出'Hello World'
$a.= "World";
echo $a; //输出'Hello World'
?>
PHP还提供了数组运算符,用来对两个数组进行比较,下表中列出了所有的数组运算符及其说明。
PHP还有一个类型运算符instanceof,用来测定一个给定的对象是否来自指定的对象类。
数组运算符 | 名 称 | 例 子 | 结 果 |
+ | 联合 | $a + $b | $a和$b的联合 |
== | 相等 | $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 |
PHP还提供了一种三元运算符<?:>。它与C语言中的相同,语法格式如下:
condition?value if TRUE: value if FALSE
condition是需要判断的条件,当条件为真时返回冒号前面的值,否则返回冒号后面的值。
例如:
<?php
$a=10;
$b=$a>100? 'YES': 'NO';
echo $b; //输出'NO'
?>