php中使用较多的运算符,php中运算符使用方法总结_PHP教程

算术运算符

1、算术运算符:+、-、*、/、%。

2、递增/递减运算符:如$a++,$a--,++$a,--$a.

如:

代码如下

三元运算符

(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 位运算符

代码如下

$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);

}

?>

以上例程会输出:

--------- --------- -- ---------

result value op test

--------- --------- -- ---------

Bitwise AND

( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)

( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)

( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)

( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)

( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

Bitwise Inclusive OR

( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)

( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)

( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)

(13 = 1101) = ( 8 = 1000) | ( 5 = 0101)

Bitwise Exclusive OR (XOR)

( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)

( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)

( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)

(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)

比较运算符

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。

代码如下

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

内置类可以定义自己的比较,不同类不能%

http://www.bkjia.com/PHPjc/628810.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628810.htmlTechArticle算术运算符 1、算术运算符:+、-、*、/、%。 2、递增/递减运算符:如$a++,$a--,++$a,--$a. 如: 代码如下 ?php $a=10; $b=5; $c=$a++; //先赋...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值