运算符

PHP中运算符一共分为9类: 赋值运算符, 算术运算符,比较运算符, 逻辑运算符, 错误抑制符, 三目运算符, 位运算符, 自操作运算符, 连接操作符

算术运算符

算术运算: 基本运算符: +, - , * , / , %

注意: /和%运算, 除数(分母)不能为0

错误抑制符

错误抑制符: 抑制错误,不让错误表现出来.

错误抑制符号: @,在可能出现错误的语句之前使用@符号即可.

错误抑制符不能抑制fetal error(致命错误)---就是导致整个程序不能运行

赋值运算符

赋值运算: 将右边的结果保存到左边的变量中.

赋值运算符: =, +=, -=, *=, /=, %=, .=

=: 将右边的结果直接赋值给左边

*=: 复合赋值, 先将左边的变量里面保存的值取出来与右边的结果进行相应的运算

注意:一般我们运算都是从左往右运算,但是php中应该说编程语言都是从右往左算起的

例如:a=b+c 结果是将b+c的结果赋给a程序中的=号不能理解为相等,应该为理解为右边是什么就给左边是什么。

(+/-/*///%/)加减乘除取余,最后将结果重新赋值给左边的变量.—把红色看成空格就好了

注意: 在进行复合运算的时候,右边的结果应该特别注意,在进行除法或者取模的时候不能为0 相当于一个数不能除以0

计算永远是先计算右边的结果,另外是将左边变量的值一定是放在右边结果的左边

相当于先计算左边的然后计算右边

比较运算符

比较运算: 进行数据的对比, 不需要用户额外的处理,系统会自动的转换成同种类型进行比较. 比较的结果只有两种: true(真)和false(假)

比较运算符: ==, >,>=,<,<=,!=,===,!==

==: 比较两个数据的值是否相等

===: 全等,要求比较的数据本身类型完全相同

字符串进行比较的时候,是一个一个字符进行比较(比较的是ASCII码值)

逻辑运算符

逻辑运算: 是一种针对结果的运算(针对布尔进行运算)

逻辑运算符: 逻辑与(&&),逻辑或(||)和逻辑非(!)

逻辑与: 左边的结果与右边的结果同时成立(都为true),结果才为真,否则都为假

逻辑或: 左边的结果或者右边的结果至少有一个为真,那么结果就为真, 都为假时结果为假.

逻辑非: 只针对一个结果进行操作, 如果结果本身为真,那么取反后就为假.

简单的理解为小学的大于小于就ok了

因为逻辑与只要满足左边的为false,那么整个结果就是false

逻辑或只要左边的为true,那么整个结果一定是true, 后续第二个表达式就不需要判断执行: 将这种只需要计算一部分就能得到最终结果的运算方式称之为短路运算.

理解为高中的真与假

正是因为有短路运算的存在: 所以该位置存在代码优化

如果是逻辑与运算: 那么将出现false的可能性较大的放前面

这个还是要解释一下的:意思是与运算两边为真就是真,

还是看例子:a(出现假的概率很大)&&  b(不管你是真还是假)假如a是假那么系统就没必要理会你b是什么鬼东西,因为与的意思是只要有一个为假整个结果都是假,

因此判断到a这里程序停止了判断b,一句话:一开始就知道结果(假),就不必往下执行了

如果是逻辑或运算: 那么将出现true的可能性较大的放前面

这个和上面的意思错不多:或运算一个为真结果都为真,还是那上面的例子:

a(出现真的概率很大)||b(不管你是真还是假)原理都一样;因此判断到a这里直接运行b不管你b是真还是假。

三目运算符

三目: 也称之为三元, 在一次运算中会出现三个表达式: 但是只会执行两个

三目运算: 是一种简化的if判断

语法格式: 表达式1 ? 表达式2 : 表达式3;

如果表达式1成立,执行表达式2;否则执行表达式3: 表达式1一定执行,表达式2和表达式3选择性执行其中一个.

三目运算中可以嵌入三目运算: 切记被嵌入的三目元素必须使用()进行包裹,要不然会因为系统分不清楚三目运算的符号而导致结果错乱.—看过盗梦空间吗,这句话可以理解为梦中梦

连接运算符

连接运算: 是php中为字符串的合并提供的一种运算方式.

连接运算符: ‘.’

系统只要一碰到’.’ ,不管前后是什么数据,都会变成字符串来操作—简单来说就是一个点,把左右两边的东西连成一串,注意要是字符串类型(“内容”)这就是一个字符串只有括号不算

自操作运算符

自操作: 自己操作自己

自操作运算符有两种: ++和--

++: 自己加1

--: 自己减1

子操作符可以放在变量前后: 前置自操作和后置自操作

++a前置自操作: 先改变自己,然后再将自己去参与可能存在的运算—加号在前

a++后置自操作: 先参与可能存在的其他运算,再改变自己—加号在后

如果没有参与其他运算: 前置自操作与后置自操作的结果是一致的.

如果自操作运算参与其他运算,那么结果就不同了.

自操作很少自己单独操作,而且几乎不可能参与运算: 通常只用于循环变量

这个东西理解起来很吃力,直到现在我都有一点模糊

位运算符

位运算: 直接深入到二进制运算, 位上只有两个值0和1(不强制要求所有人掌握)

位运算符: 按位与(&),按位或(|),按位异或(^),按位取反(~),按位右移(>>),按位左移(<<)

位运算: 要求将所有的数据先转成二进制才进行运算(辗转相除法,指数法)

按位与: &, 位与位进行合并: 如果都为1结果为1,否则为0

按位或:|, 两个有一个为1就为1,否则为0

按位异或: ^, 两个位相同为0,不相同为1

按位取反: ~,对一个位进行运算: 如果是0变成1,1变成0

按位右移:>>, 向右移动指定的位数,将所有位向右边移动指定位数, 右边移出的就丢失,左边补符号位

按位右移操作称之为除2操作(向下取整)

按位左移:<<,向左移动指定位数, 左边移出就没了,但是右边的补0

按位左移操作称之为乘2操作

计算机码规则: 计算机中有三种二进制码

原码:      十进制的数转换成的二进制码(原码)

反码:     反码就是在原码的基础上取反(符号位不变)

补码:      反码的基础上+1操作

正数的原码,反码和补码都是一样,负数在计算机中存的结果一定是补码(码的由来是为了解决0和-0的问题)

晕了没!这东西我也不太懂,但还是给你们了解一下想搞懂这些东西要知道二进制的一些基本原理不过放心这东西很好用可以这样说知道现在我还没发现它的用处

代码执行结构

代码执行结构分为三种: 顺序结构,分支结构和循环结构

顺序结构: 代码从上往下逐行执行(默认的结构)

分支结构: 可能存在多个选择,但是用于智能执行其中部分

循环结构: 某段代码重复执行

分支结构

分支结构: 可能有多种情况,每种情况下的都有一些代码需要执行(每种情况又不一样),需要通过某些特定的条件的验证,来选择性的执行其中某段代码.

PHP中分支结构分为两种: if分支和switch分支

If分支

通过if语句来进行条件验证的一种分支结构。

最简if分支: 如果条件成立执行,如果条件不成立不执行

If(条件表达式){

//条件成立要执行的代码块

}

标准if: 不管怎么样都会执行一段代码

If(条件表达式){

//满足条件要执行代码

}else{

//不满足条件要执行的代码

}

复杂if: 条件有多个,但是最终永远只能执行满足其中一个条件的代码

If(条件表达式1){

//满足条件1的代码

}elseif(条件表达式2){

//不满足条件1但是满足条件2的要执行的代码

}else  if(条件表达式3){

//不满足条件1和条件2但是满足条件3要执行的代码

}[else{

//有else代表if一定会执行

//没有else代表if有可能所有条件都不满足不执行

}]

Elseif和else if的区别(逻辑上),结果没有区别

如果想要使用简化的if条件: 下面的条件依赖上面的条件,必须保证条件代码是顺序变化

如果if满足条件的要执行的代码只有一条: 那么可以省略大括号

总结:一般是用来进行判读,if(判读语句){判断之后想要做的事情}elseif(判断语句){判断之后想要做的事情}后面还可以无限的加,注意要灵活的用if语句以后做项目会带来很大好处个人总结就是:如果是对的往坏的方面想,如果坏的往好的方面想。然后做比较看哪个更好。

Switch分支

Switch分支也是针对某个条件进行判断: 针对固定值进行(不会使用比较),只有想等比较

Switch(条件变量){

Case 值; //如果值与条件变量相等就匹配

//满足条件所有执行的代码

Break;     //结束当前分支

Case 值2: //如果值2与条件变量相等(循环匹配条件)

//满足值2所执行的代码

Break;

Default:   //类似if中的else

//要执行代码

Break;

}

注意:条件变量只能是一个固定值,这样理解:不能说大于3,只是‘小明’或者3这些固定的值,不能模糊

Switch实现扔骰子返回大小

骰子可能出现的值是1~6

总结和if语句差不多只是换了一种方式

循环结构

循环也称之为迭代(iterate)

循环结构: 有段代码需要重复执行指定的次数

PHP中,循环结构分为四种: for循环,while循环,do-while循环和foreach循环.

Foreach循环

Foreach循环是PHP中特有的一种循环,专门针对是数组.

For循环

For循环是一种: 将所有的内容都在循环内部控制的一种循环

For循环基本语法

For(初始化条件表达式 ; 边界条件判断表达式 ; 循环变量控制表达式){

//循环体: 多行要执行的代码组成

}

For循环变化: 任何一个条件都可以不存在

For循环中: 任何一个语句表达式中可以有多条语句,使用”,”分开

For循环的条件表更可以放到循环体内

While循环

While循环: 是一种必需在外部定义初始化条件的循环,需要在循环的内部控制循环条件的变更.

While(条件表达式){

//循环体

//变更循环条件

}

Do-while循环

Do-while循环与while循环很类似: do-while循环一定会执行一次(至少)循环体: 先执行后判断条件.

Do{

//循环体

//循环条件变更

}while(条件判断表达式);     //必须要使用语句结束符

Do-while与while的区别

循环语句是好东西一定要学会

简单分解一下这些语句

For($a=0;$a<10;$a++循环条件){

$a=$a+1;//循环体

}

先执行$a=0,->然后$a(0)<10,成立,->跳到$a=$a(0)+1;右边的$a=0,左边$a=1

->跳到$a++此时$a自增1变成$a=2  ->跳到$a(2)<10 ->跳到$a(3)=$a(2)+1

->这样一直重复执行直到$a(9)=$a(8)+1 ->跳到$a++ 此时$a=10 ->跳到$a(10)<10不成立程序结束运行

For和foreach一个原理只是用在的地方不同foreach一般用在数组,for不能用在数组

While 和do-while的用法都一样只是格式不同

Do-while与while的区别:do-while会运行先一次。因为它的循环体在上面,循环条件在下面,程序是从上往下执行的,一般我们都是使用while,do-while很少使用不过还是尽量掌握好两种用法

模板标签

PHP代码是嵌入到

在混搭的过程中: 有点破坏HTML结构,HTML是一种标记语言(开始和结束): PHP定义了一套模板标签,专门用于PHP在HTML中嵌入.

模板标签: 使用某些特殊符号代替原有的大括号

做大括号: 使用冒号”:” 代替

右大括号: 使用end + 标签本身代替 + 分号

模板标签有以下几种

If(){} ====> if():     endif;

For(){} =====> for():   endfor;

While(){} ======> while(): endwhile;

Foreach(){}  =====> foreach():   endforeach;

换种写法

函数

  1. 什么是函数?

函数是一种结构(不会自动执行), 是一种将有可能需要多次执行的代码进行一次封装(包裹),在需要使用的地方,可以通过函数名进行调用, 实现代码的复用(重复利用)

函数意义

实现代码的重复利用

用函数来解决问题的这种思想: 模块化编程思想 ---->升华(面向过程编程)

定义函数

函数有几个要素: 关键字(function), 函数名, 参数(形参和实参), 函数体(代码块)和返回值(返回结果)

定义语法

Function 函数名([形参列表,使用逗号分隔]){

//函数体

//返回值return

}

最简函数: 只有函数名,函数体为空,没有参数

复杂函数: 有函数名,有参数,有函数体,有返回值

使用函数

使用函数名()就可以直接调用一个已经存在的函数.

注意: 调用函数时,如果函数定义的时候有参数,那么调用的时候就必须传入对应的数据.

函数名

函数名的命名规则

  1. 由字母,下划线和数字组成,其中数字不能开始
  1. 函数名字有可能很长,那么可以使用两种方式来描述

a)         下划线法: 多个单词使用下划线连接

b)        驼峰法: 每个单词的首字母大写(通常第一个小写)

  1. 函数不能定义同名的: 名字必须唯一(不能与自己的相同,也不能与系统的相同)

函数命名规则和变量一样一句话:假如别人命名起的好你就找的快,假如别人坑死你命名起的不好找的你欲哭无泪

参数

参数分为两种: 形参和实参

形参: 形式参数,是指函数在定义的时候,所用的变量

实参: 实际参数,是指函数在调用的时候,所使用的数据

函数内部工作的一定是形参: 在定义的时候根本不知道实参是什么,只能用形参

形参: 就是用来接收外部数据, 给函数内部使用

工作原理: 在调用函数的时候,先把实参传递给形参

如果一旦定义了形参,那么在函数调用的时候,就必须传入实参

但是: 实参可以比形参多,不能少—实参函数外面的数据;形参用来接收外面的数据相当于一个中转站

参数传值

只要函数定义了形参,那么在调用的时候就需要传入实参: 实参实际上是赋值给形参

参数传值分为两种: 值传递(默认的)和引用传递

值传递: 将数据复制一份,传递给形参: 两个变量两个值—相当于操作两个不同的东西

引用传递: 将实参变量的内存地址赋值给形参: 两个变量指向同一块内存地址: 必须在定义函数的时候,给形参使用地址符号(&)—相当于操作同一样东西

引用传值: 只有变量可以传值

标准使用

这个知识点是重点自己一定多找资料学习

函数内存原理

尽量看懂会对你有帮助的

模拟内存:不是真实内存分布

在计算机中: 内存是RAM, 可以重复读写,效率很高.

内存在实际应用中分为多个区域: 堆,栈,代码段和数据段

堆: 拥有很大的内存,而且内存地址很连续, 效率最低

栈: 是程序唯一能操作的内存,效率特别高, 但是最小

代码段: 装载代码的地方(任何程序的执行都是将代码加载到内存)

数据段: 存放数据的位置, 分为两个区(全局区,静态区)

php知识(第2天)的更多相关文章

  1. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. 学点HTTP知识

    不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...

  4. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  5. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  6. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  7. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  8. [C#] C# 知识回顾 - 异常介绍

    异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally ...

  9. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  10. [.NET] C# 知识回顾 - 事件入门

    C# 知识回顾 - 事件入门 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6057301.html 序 之前通过<C# 知识回顾 - 委托 de ...

随机推荐

  1. S3C6410嵌入式应用平台构建(三)

    构建了好久的系统,由于工作原因,没有及时写记录,目前我已经进展到构建yaffs2文件系统,启动Linux内核了.Uboot移植基本功能已经完成. 由于Uboot移植方法大致是一样的,我主要参考这位博友 ...

  2. MVVMLight Toolkit在Windows Phone中的使用扩展之一:在ViewModel中实现导航,并传递参数

    MVVMLight是MVVM开发模式在Windows Phone平台下的一个开发框架,关于MVVMLight的基础使用,已经有人写的很好了,可以参照:MVVM.MVVMLight.MVVMLight ...

  3. LNMP : 502 Bad Gateway 解决小记,真正的原因

    站点搬迁到新的server.原先一直都是LAMP.如今改为LNMP. 将重写文件 htaccess改成 nginx的 conf.放到了站点.可仅仅能打开首页,其它重写页面一打开都是不停的载入. 载入等 ...

  4. SQL学习之HAVING过滤分组

    1.SQL除了能用Group By分组数据之外,SQL还允许过滤分组,规定包括那些分组,排除那些分组.例如,你可能想要列出至少有两个订单的所有顾客.为此,必须基于完整的分组而不是个别的行进行过滤. 基 ...

  5. Div实现滚动条效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. sql大数据量查询的优化技巧

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  7. Unity StrangeIoc框架 (一)

    最近想项目中需要使用这个架构  因此 上网看了很多资料摸索   但是对于初学者来说大多数的资料不是那么容易理解 而且文档也是英文的阅读起来有点吃力  所以记录一下自己阅读的过程  方便以后翻阅和跟我一 ...

  8. iOS 开发技巧

    快速移除键盘 之前一直是讲view的父类改成control,然后加一个全屏按钮,点击让键盘消失.这个方法要写好多代码,现在一个比较好的方法是重写一个下面的方法: - (void)touchesBega ...

  9. perspective结合transform的3D效果

    http://css-tricks.com/almanac/properties/p/perspective/ 链接中讲了 perspective的两种用法及比较: 1.perspective:100 ...

  10. Java泛型的一点用法(转)

    1.一个优秀的泛型,建议不要这样写public static <K, V> Map<K, V> getMap(String source, String firstSplit, ...