php中运算符使用方法总结
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-06 14:12:31 浏览: 评论:0
算术运算符
1、算术运算符:+、-、*、/、%.
2、递增/递减运算符:如$a++,$a--,++$a,--$a.
实例代码如下:
- $a=10;
- $b=5;
- $c=$a++; //先赋值,后自增.$c=$a,$a=$a+1
- $d=$b--; //先赋值,后自减.$d=$b,$b=$a-1
- echo '$a='.$a."||".'$c='.$c.'
'; //$a=11,$c=10- echo '$b='.$b."||".'$d='.$d.'
'; //$b=4,$d=5- ?>
- $a=10;
- $b=5;
- $c=++$a; //先自增,后赋值.$a=$a+1,$c=$a
- $d=--$b; //先自减,后赋值.$b=$a-1, $d=$b
- echo '$a='.$a."||".'$c='.$c.'
'; //$a=11,$c=11- echo '$b='.$b."||".'$d='.$d.'
'; //$b=4,$d=4- ?>
三元运算符
(expr1) ? (expr2) : (expr3);
解释:如果条件“expr1”成立,则执行语句“expr2”,否则执行“expr3”.
以下语句的语法是正确的,它们以小解引号的方式忽略了第二或第三“元”:
实例代码如下:
- $a>$b ? print "Yes" : "";
- $a>$b ? '': print 'No';
应该注意的是:在使用三元运算符时,建议使用print语句替代echo语句.注意下列一串语句的理解:
实例代码如下:
- $str = $_GET['abc'] ? 'wangjinbo' : 'wjb';
这里不能理解为:当$str等于$_GET['abc'] 时,赋值为 'wangjinbo' 否则赋值为 'wjb';因为一:判断相等应该用==;因原二:三元算符的语法是如上所示:(expr1) ? (expr2) : (expr3),显然上面的二元,三元'wangjinbo'或'wjb'不能单独构成一个有意义的表达式;正确理解是:当$_GET['abc']为空(也就是否,PHP中'',null,0,undifine,都等效布尔值false)时,将$str赋值为'wangjinbo',否则赋值为'wjb';
逻辑运算符:
实例代码如下:
- $a=10;$b=7;
- if($a++>8 || $b++>7){ //$a++>8为真,$b++>7这个就不执行了
- echo 'OK!';
- }
- echo 'a='.$a.'b='.$b; // 输出OK,a=11,b=7
- 改变一下
- $a=10;$b=7;
- if($a++>10 && $b++>7){ //$a++>8为假,$b++>7这个就不执行了
- echo 'OK!';
- }
- echo 'a='.$a.'b='.$b; // a=11,b=7
细节:and && 都表示逻辑与 ,他们的区别在什么地方?
主要体现在优先级上面,and 的优先级
实例代码如下:
- and< = <&&
- or < = < ||
- $a=false || true; //&& > = > and ;先比较false || true,再赋值
- $b=false or true; //|| > = > or ;先赋值$b=false,再比较,所以结果是false
- var_dump($a,$b); //bool(true) bool(false)
位运算符
位移在 PHP 中是数学运算.向任何方向移出去的位都被丢弃.左移时右侧以零填充,符号位被移走意味着正负号不被保留.右移时左侧以符号位填充,意味着正负号被保留.要用括号确保想要的优先级.例如 $a & $b == true 先进行比较再进行按位与;而 ($a & $b) == true 则先进行按位与再进行比较.
要注意数据类型的转换.如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作.
PHP的ini设定error_reporting 使用了按位的值,提供了关闭某个位的真实例子.要显示除了提示级别之外的所有错误,php.ini 中是这样用的:
E_ALL & ~E_NOTICE
具体运作方式是先取得 E_ALL 的值:
00000000000000000111011111111111
再取得 E_NOTICE 的值:
00000000000000000000000000001000
然后通过 ~ 将其取反:
11111111111111111111111111110111
最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位:
00000000000000000111011111110111
另外一个方法是用按位异或 XOR(^)来取得只在其中一个值中设定了的位:E_ALL ^ E_NOTICE
error_reporting 也可用来演示怎样置位.只显示错误和可恢复错误的方法是:E_ERROR | E_RECOVERABLE_ERROR
也就是将 E_ERROR
00000000000000000000000000000001和 E_RECOVERABLE_ERROR
00000000000000000001000000000000
用按位或 OR(|)运算符来取得在任何一个值中被置位的结果:
00000000000000000001000000000001
Example #1 整数的 AND,OR 和 XOR 位运算符
实例代码如下:
- /*
- * Ignore the top section,
- * it is just formatting to make output clearer.
- */
- $format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
- . ' %3$s (%4$2d = %4$04b)' . "n";
- echo <<
- --------- --------- -- ---------
- result value op test
- --------- --------- -- ---------
- EOH;
- /*
- * Here are the examples.
- */
- $values = array(0, 1, 2, 4, 8);
- $test = 1 + 4;
- echo "n Bitwise AND n";
- foreach ($values as $value) {
- $result = $value & $test;
- printf($format, $result, $value, '&', $test);
- }
- echo "n Bitwise Inclusive OR n";
- foreach ($values as $value) {
- $result = $value | $test;
- printf($format, $result, $value, '|', $test);
- }
- echo "n Bitwise Exclusive OR (XOR) n";
- foreach ($values as $value) {
- $result = $value ^ $test;
- printf($format, $result, $value, '^', $test);
- }
- ?>
以上例程会输出:
比较运算符
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行.此规则也适用于 switch 语句.当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对.
实例代码如下:
- var_dump(0 == "a"); // 0 == 0 -> true
- var_dump("1" == "01"); // 1 == 1 -> true
- var_dump("10" == "1e1"); // 10 == 10 -> true
- var_dump(100 == "1e2"); // 100 == 100 -> true
- switch ("a") {
- case 0:
- echo "0";
- break;
- case "a": // never reached because "a" is already matched with 0
- echo "a";
- break;
- }
- ?>
对于多种类型,比较运算符根据下表比较(按顺序).
比较多种类型 运算数 1 类型 运算数 2 类型 结果 null 或 string string 将 NULL
转换为 "",进行数字或词汇比较 bool 或 null 任何其它类型 转换为 bool,FALSE
< TRUE
object object 内置类可以定义自己的比较,不同类不能%
Tags: 运算符使用方法
- 上一篇:PHP判断一个字符串是否是回文字符串
- 下一篇:php类和对象之公共属性与私有属性
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)