4.运算符和流程控制

运算符

算术运算符

  • 基础:
    符号有:+ - * / %
    说明:

1,他们都是针对数字进行的运算;
2,如果他们的两边有不是数字的数据,就会(自动)转换为数字;
3,其中取余运算(取模运算)%,它只针对“整数”进行运算,如果不是,会自动截取为整数。11. 3 % 3 相当于 11 % 3;11.8 % 3. 8 相当于 11 % 3;

  • 自增自减运算符:

常规:对数字进行自加1或自减1。
字符串: 只能自增,且自增的效果就是“下一个字符”,其只能针对字母或数字进行自加:
布尔值递增递减无效
null递减无效,递增结果为1

  • 比较运算符

符号:> >= < <= == != === !==
一般比较:是针对数字进行的大小比较
==和===比较:前者通常叫做模糊相等的比较,后者叫做精确相等的比较(只有数据的类型和数据的值/内容,都相等,才是全等的)。必须能够找到手册的“类型比较表”:附录》php类型比较表:
不要对浮点数直接进行大小比较

  • 常见不同类型(标量类型)数据之间的比较规律:

如果比较的数据中,有布尔值,转为布尔值比较,布尔值比较只有一个规则:true>false
否则,如果有数字值,就转为数字值比较:这就是常规比较。
否则,如果两边都是“纯数字字符串”,转为数字比较
否则,就按字符串比较。字符串比较的规则是:对两边的字符串,一个一个从前往后取出字符并进行比较,谁“先大”,结果就是它大。

逻辑运算符

逻辑运算符都是针对“布尔值”进行的运算。
如果不是布尔值,就会转换为布尔值进行;
布尔值只有2个:true,false

字符串运算符

1,符号只有一个:. 也衍生出另一个: .=
2,含义:就是将这个符号两边的字符串连接起来;
3,如果两边不是字符串,就会自动转换为字符串,然后连接起来。

“ab”  .   3     ==>> “ab3”;
“12”  .   3         ==>>”123”
12  .  3         ==>> “123”

赋值运算符

一个基本赋值运算符: =

形式: $变量名 = 值;
理解: 将右边的值(不管做了多少运算),赋值给左边的变量。

若干个衍生的赋值运算符:

+= 加等: 形式: $变量名 += 值;
理解: 相当于: $变量名 = $变量名 + 值;
-= 加等: 形式: $变量名 -= 值;
理解: 相当于: $变量名 = $变量名 - 值;
*= /= %= .= 其都可以认为是上述形式的一种简化版。

条件(三目,三元)运算符

数据值1 ? 数据值2 : 数据值3

位运算符

基础规定

1,位是什么?就是2进制数字的每一个“位”,一个整数数字,有(由)32个位构成!

2,位运算符是仅仅针对整数进行的运算符;

3,位运算符有如下几个
&: 按位与;
|: 按位或;
~: 按位非;按位取反;
^: 按位异或;

4,位运算符的基本语法规则:
按位与基本规则:
1 & 1 ==>> 1
1 & 0 ==>> 0
0 & 1 ==>> 0
0 & 0 ==>> 0

按位或基本规则:
1 | 1 ==>> 1
1 | 0 ==>> 1
0 | 1 ==>> 1
0 | 0 ==>> 0

按位非基本规则:
~1 ==>> 0
~0 ==>> 1

按位异或基本规则:
1 ^ 1 ==>> 0
1 ^ 0 ==>> 1
0 ^ 1 ==>> 1
0 ^ 0 ==>> 0
可见,按位异或的规则是:相同为0,不同为1

  • 整数的按位与运算(&)

形式:
$n1 & $n2; //n1,n2是2个任意整数;
含义:
将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位与运算之后的结果!

注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。
示例图示(只用8个位来演示):
$r1 = 10 & 20;


  • 整数的按位或运算:

形式:
$n1 | $n2; //n1,n2是2个任意整数;
含义:
将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位或运算之后的结果!

注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。示例图示(只用8个位来演示):
$r1 = 10 | 20;


  • 整数的按位左移运算

形式:
$n1 << $m
含义:
将十进制数字n1的二进制数字形式(也是32位的)的每一个位上的数字都一次性往左边移动m位,
并将右边空出来的位置补0,左边冒出去的不管,这样操作之后得到的结果。

示例图示(只用8个位来演示):$r1 = 10 << 2;



可见,结果为:25 + 23 = 32 + 8 = 40
代码验证:


  • 补充知识:原码,反码,补码

原码:
就是一个二进制数字,从“数学观念”上来表达出的形式。其中,我们规定:
一个数字的最左边一位是“符号位”,0表示正数,1表示负数;

反码:
正数的反码就是其本身(即不变);
负数的反码是:符号位不变,其他位取反;

补码:
正数的补码就是其本身(即不变);
负数的补码是:符号位不变,其他位取反后+1——即反码+1

  • 位运算符的应用:管理一组事物的开关状态

什么是开关状态?
现实中,有很多数据都是只有2种结果(值)的,对应的其实就是我们的布尔类型的值。

这里,所谓管理一组事物的开关状态,应该理解为其实就是管理若干个只有2个状态的“数据符号”。
比如:有5个灯泡,对应5个状态数据。
这5个灯泡,就有 25 种状态呢?

这里的管理目标是:使用一个变量,就可以表达若干个数据的“当前状态”。具体有3个任务:
1,通过该变量,可以获知任何一个数据(灯泡)的当前状态。
2,通过该变量,可以将一个一个数据的状态“关闭”;
3,通过该变量,可以将一个一个数据的状态“开启”;

数组运算符

+: 数组联合,也可以理解为“数组串联”。
将右边的数组项合并到左边数组的后面,得到一个新数组。如有重复键,则结果以左边的为准
$arr1 = array(5=>10, 8=>20, 10=>30);
$arr2 = array(3=>33, 2=>22);
$r1 = $arr1 + $arr2; //结果为:array(5=>10, 8=>20, 10=>30, 3=>33, 2=>22)
另一个有重复键的例子:
$arr1 = array(5=>10, 8=>20, 10=>30);
$arr2 = array(8=>33, 2=>22);
$r1 = $arr1 + $arr2; //结果为:array(5=>10, 8=>20, 10=>30, 2=>22)

= =:如果两个数组具有相同的键名和键值(可以顺序不同,或类型不同),则返回true
$arr1 = array(3=>33, 2=>22);
$arr2 = array(2=>”22”, 3=>”33” );
此时,$arr1,和 $arr2是相等的( = = )
!=

= = =: 如果两个数组具有相同的键名和键值且顺序和类型都一样,则返回true
!= =

错误控制运算符@:

通常就用在一个地方:

$link  =  @mysql_connect(“数据库服务器地址”, “用户名”,  “密码”);

作用是:
如果该连接数据的语句失败(比如连接不上),则屏蔽该失败的错误提示!

运算符的优先级

括号最优先,赋值最落后(通常)
先乘除后加减
大致:单目运算符〉算术运算符〉比较运算符〉逻辑运算符(除了“非”运算)

流程控制

  • if分支结构

  • switch分支结构

  • for循环结构



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353