欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP基础教程三之运算符

程序员文章站 2022-03-22 16:58:03
...

本节讲解的内容

  • 算术运算符

  • 递增、递减运算符

  • 赋值运算符

  • 字符串运算符

  • 比较运算符

  • 位运算符

  • 逻辑运算符

  • 三元运算符

  • 错误控制运算符

前言

PHP的运算符是在php基础中必须要掌握的一个技能,它是php数据处理的桥梁,数据的各种运算都要用到运算符,比如加、减、乘、除,与、或等运算。

算术运算符

算术运算符:就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。

算术的运算符分类:

-$a 取反,$a的负值

$a = -1;
echo -$a;
-----结果-----
1

$a + $b 加法 $a和$b的和

$a = 12;
$b = 12;
$res = $a + $b;
echo $res;
-----结果-----
24

$a - $b 减法$a和$b的差

$a = 12;
$b = 6;
$res = $a - $b;
echo $res;
-----结果-----
6

$a * $b 乘法 $a和$b的积

$a = 2;
$b = 3;
$res = $a * $b;
echo $res;
-----结果-----
6

$a / $b 除法 $a和$b的商

$a = 12;
$b = 6;
$res = $a / $b;
echo $res;
-----结果-----
2

$a % $b 取模 $a和$b的余数;

$a = 3;
$b = 2;
$res = $a % $b;
echo $res;
-----结果-----
1

递增、递减运算符

  • ++$a:$a的值加一,然后返回 $a,这是前加 。

  • $a++ 返回 $a ,然后将 $a 的值加一,这是后加。

  • –$a $a 的值减一,然后返回 $a ,前减。

  • $a– 返回 $a ,然后将 $a 的值减一,后减。


++$a

$a = 1;
$b = ++$a;//先++,在进行赋值运算,等价于$a = $a + 1; $b = $a;
echo $b . '<br>' . $a;
-----结果-----
$b = 2 $a = 2

$a++

$a = 1;
$b = $a++;//先赋值,在进行++运算,等价于$b = $a; $a = $a + 1;
echo $b . '<br>' . $a;
-----结果-----
$b = 1  $a = 2

减减的情况和上面的情况一样。

赋值运算符

基本的赋值运算符是“=”,它实际上意味着把右边表达式的值赋给左边的运算数。

$a = 1;
$b = 'string';

还有情况是 +=-=/=

$a = 1;
$a += 2;//等价于$a = $a + 2;
echo $a;
-----结果-----
3

字符串运算符

有两个字符串。运算符是(“.”),它返回其左右参数连接后的字符串。

$a = 1;
$b = 2;
echo '$a = ' . $a . '  $b = ' . $b;
-----结果-----
$a = 1 $b = 2;

比较运算符

比较运算符是比较两个变量的情况,是否数值一样,是否数据类型一样,而比较出来的结果大多数是布尔类型的。

常见的比较运算符是:

  • $a == $b 等于 true 当$a == $b,这里一般只会去判断数值时候相等,不会去判断类型是否相等。

  • $a === $b 全等 true,如果 $a 等于 $b ,并且它们的类型也相同。

  • $a != $b 不等 ture,当两个变量的值不相等的时候返回true;

  • $a <> $b 不等 true,上面的情况还有一种写法,如果类型转换后 $a 不等于 $b 。

  • $a !== $b 不全等 true,如果 $a 不等于 $b ,或者它们的类型不同,注意两个变量有一个不相等的时候都返回true;(数值、类型)

  • $a < $b 小与 TRUE ,如果 $a 严格小于 $b 。

  • $a > $b 大于 TRUE ,如果 $a 严格大于$b 。

  • $a <= $b 小于等于 TRUE ,如果 $a 小于或者等于 $b 。

  • $a >= $b 大于等于 TRUE ,如果 $a 大于或者等于 $b 。


    $a = 2;
    $b = '2';
    var_dump($a == $b); //判断两个数值是否相等,比较的时候会进行类型转换。
    -----结果-----
    bool(true)  
    var_dump($a === $b);//判断数值和类型是否相等,当时全等比较的时候,不会进行类型转换。
    -----结果-----
    bool(false)

位运算符

位运算符允许对整型数中指定的位以二进制的方式进行求值和操作。

在这之前我们先来说一说二进制

二进制简单介绍

在电脑中所有数存错在内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。

什么是二进制:二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。

十进制转换成二进制:“除以2取余,逆序排列”(除二取余法)

        商   余数
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制(逆序排列):
11

12 / 2 = 6....0
6 / 2 = 3.....0
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制:
1100

15 / 2 = 7....1
7 / 2 = 3.....1
3 / 2 = 1.....1
1 / 2 = 0.....1
二进制:
1111

二进制转换成十进制:“按权展开求和”

1111 = 1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 15
10 = 0 * 20 + 1 * 21 = 2

计算机中的符号位有三种表达形式

  • 原码

  • 反码

  • 补码

在进行位运算时,都是转换成补码进行运算的。

正数的二进制表示是二进制的最前面有一个0表示正数
正数的原码,反码,补码都一样(三码合一)

负数的二进制表示是二进制的最前面有一个1表示负数。
负数的原码是用公式求得的二进制数,反码是除了符号位,其他的都取反(1变0,0变1),补码是反码 + 1。

比如-1

原码 10000000 00000000 00000000 00000001 
反码 11111111 11111111 11111111 11111110 取反
补码 11111111 11111111 11111111 11111111 加1

至于为什么要写32位,我的理解是:整型占4个字节,每个字节8位,总共32位,其中一个符号位。

二进制的简单介绍就到这里


PHP中位运算符的分类

  • $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。

  • $a | $b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。

  • $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。

  • ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。

  • $a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。

  • $a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

示例:

与(1 1 = 1; 1 0 = 0;0 0 = 0)

$a = 1 & 2;//进行“与”运算  两个都为1的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000001
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000000 == 0
echo $a;
-----结果-----
0

或(1 1 = 1;1 0 = 1;0 0 = 0)

$a = 1 | 2;//进行“或”运算  至少有一个为1的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000001
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000011 == 3
echo $a;
-----结果-----
3

异或(1 0 = 1; 1 1 = 0; 0 0 = 1)

$a = 3 ^ 2;//进行“异或”运算  一个为1,一个为0的时候为1,其他为0
// 1的补码
// 00000000 00000000 00000000 00000011
// 2的补码
// 00000000 00000000 00000000 00000010
// 结果
// 00000000 00000000 00000000 00000001 == 1
echo $a;
-----结果-----
1

取反(1 = 0; 0 = 1)注意符号位的变化。

$a = ~2;//进行“取反”运算  1变0,0变1
// 2的二进制
// 00000000 00000000 00000000 00000010
// 11111111 11111111 11111111 11111101 前面一个1,是负数
// 反码
// 11111111 11111111 11111111 11111100
// 原码
// 10000000 00000000 00000000 00000011 == -3
echo $a;
-----结果-----
-3

左移(将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”))

左移时右侧以零填充,符号位被移走意味着正负号不被保留。

$a = 1;
// 二进制:
// 00000000 00000000 00000000 00000001
// 左移时右侧以零填充,符号位被移走意味着正负号不被保留。
// 00000000 00000000 00000000 00000100 == 4
echo $a << 2;//将 $a 中的位向左移动2次
-----结果-----
4

右移时左侧以符号位填充,意味着正负号被保留。

$a = 4;
// 右移时左侧以符号位填充,意味着正负号被保留。 
// 00000000 00000000 00000000 00000100
// 00000000 00000000 00000000 00000001 == 1
echo $a >> 2;
-----结果-----
1

到这里位运算符算术基本说完了……

逻辑运算符

逻辑运算符也就是判断逻辑,它的返回结果一般是布尔类型,像与或非等;而PHP中的逻辑运算符有:

  • $a and $b And(逻辑与) TRUE ,如果 $a 和 $b 都为 TRUE 。

  • $a or $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。

  • ! $a Not(逻辑非) TRUE ,如果 $a 不为 TRUE 。

  • $a && $b And(逻辑与) TRUE ,如果 $a 和 $b 都为 TRUE 。

  • $a || $b Or(逻辑或) TRUE ,如果 $a 或 $b 任一为 TRUE 。

逻辑与(当表达式的两边都为true的时候结果为真)

两个&符号:

$a = 2;
$b = 3;

if($a > 1 && $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true;
    echo '与';
}
-----结果-----
与

一个&符号:

$a = 2;
$b = 3;

if($a > 1 & $b > 2){ //左边的为true,右边的为true;两边都为true,结果为true;
    echo '与';
}
-----结果-----
与

区别:两个&时:如果有一个逻辑判断表达式为假,则后面的逻辑运算就不会执行,俗称短路现象。

一个&:两边的都会判断。不管是真是假。

逻辑或(当左右两个表达式其中有一个是true的时候,为真)

两个|符号:

$a = 2;
$b = 4;

if($a > 1 || $b < 3){ //左边的为true,右边的为false;
    echo '或';
}
-----结果-----
或

一个|符号:

$a = 2;
$b = 4;

if($a > 1 | $b < 3){ //左边的为true,右边的为false;
    echo '或';
}
-----结果-----
或

区别:两个|时:如果有一个逻辑判断表达式为真,则后面的逻辑运算就不会执行,短路现象。

一个|:两边的都会判断。不管是真是假。

(!true = false; !false = true)

$a = true;
var_dump(!$a);
-----结果-----
bool(false)

三元运算符

语法为:条件表达式?表达式1:表达式2。
说明:问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
其逻辑为:“如果为真执行第一个,否则执行第二个。”

$a = 456;
$b = $a > 10 ? true : false; //问号前面的结果为真,执行第一个true;
var_dump($b);
-----结果-----
bool(true);

三元运算符可以说是if…else的简化版,在以后的开发中也会经常使用到的。

错误控制运算符

介绍: PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉

当你不想用户看到错误信息可以使用。

总结

说了这么多总算把运算符的大部分都说完了,其中还有数组运算符,类型运算符等,在数组和对象的时候会说。

以上就是PHP基础教程三之运算符的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签: PHP,运算符