ASP标记:<%php代码%>
短标记:
以上两种基本弃用,如果要使用需要在配置文件中开启
PHP中注释分为两种:行注释和块注释
行注释:一次注释一行
//:后面跟的所有内容都是注释
#:与//一样
块注释:一次注释多行
/:中间直到/出现之前,全部都是注释
*/
语句分隔符:在PHP中,代码是以行为单位,系统需要通过判断行的结束,该结束通常都是一个符号:分号“;”(英文状态下的分号)
特殊说明:
1.PHP中标记结束符?>有自带语句结束符的效果,最后一行PHP代码可以没有语句结束符“;”
2.PHP中其实很多代码的书写并不是嵌入到HTML中,而是单独存在,通常书写习惯中就不建议使用标记结束符?>,PHP会自动从开始到最后全部认为是PHP代码,从而解析
PHP中的所有变量都必须使用“$”符号
1.定义:在系统中增加对应的变量名字(内存)
2.赋值:可以将数据赋值给变量名(可以在定义的同时完成)
预定义变量:提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
$_GET:获取所有表单以get方式提交的数据
$_POST:POST提交的数据都会保存在此
$_REQUEST:GET和POST提交的都会保存
$GLOBALS:PHP中所有的全局变量
$_SERVER:服务器信息
$_SESSION:session会话数据
$_COOKIE:cookie会话数据
$_ENV:环境信息
$_FILES:用户上传的文件信息
可变变量:如果一个变量保存的值刚好是另外一个变量的名字,那么可以直接通过访问一个变量得到另外一个变量的值:在变量前面再加多一个$符号。
$a=’b’;
$b=’bb’;
在内存中,通常有以下几个分区:
栈区:程序可以操作的内存部分(不存数据,运行程序代码),内存小但是快
代码段:存储程序的内存部分(不执行代码)
数据段:存储普通数据(全局去和静态区)
堆区:存储复杂数据,大但是效率低
1、使用定义常量的函数:define(‘常量名’,常量值);
2、5.3之后才有的:const 常量名 = 值;
1、常量不需要使用“$”符号,一旦使用系统就会认为是变量;
2、常量的名字组成和变量相同
3、常量的名字通常是以大写字母为主(与变量以示区别)
4、常量命名的规则比变量要松散,可以使用一些特殊字符,该方式只能使用define定义;
define和const定义的常量是有区别:在于访问权限区别
常量的使用和变量一样:不可改变值(在定义的时候必须赋值)
访问特殊名字的常量,需要用到另外一个访问常量的函数:constant(‘常量名’)
数据类型:data type,在PHP中指的是存储的数据本身的类型,而不是变量的类型。PHP是一种弱类型语言,变量本身没有数据类型。
PHP的八种数据类型
在PHP中将数据类型分为三大类八小类:
简单(基本)数据类型:4个小类
整型:int/integer,系统分配4个字节存储,表示整数类型(有前提)
浮点型:float/double,系统分配8个字节存储,表示小数或者整型存不下的整数
字符串型:string,系统根据实际长度分配,表示字符串(引号)
布尔类型:bool/boolean,表示布尔类型,只有两个值:true和false
复合数据类型:2个小类
对象类型:object,存放对象(面向对象)
数组类型:array,存储多个数据(一次性)
特殊数据类型:2个小类
资源类型:resource,存放资源数据(PHP外部数据,如数据库、文件)
空类型:NULL,只有一个值就是NULL(不能运算)
类型转换:在很多的条件下,需要指定的数据类型,需要外部数据(当前PHP取得的数据),
转换成目标数据类型
在PHP中有两种类型转换的方式:
1、自动转换:系统根据需求自己判定,自己转换(用的比较多,效率偏低)
2、强制(手动)转换:认为根据需要的目标类型转换
强制转换规则:在变量之前增加一个括号(),然后在里面写上对应的类型:int/integer…其中NULL类型用到unset()
在转换过程中,用的比较多的就是转布尔类型(判断)和转数值类型(算术运算)
其他类型转布尔类型:true或者false,在PHP中比较少类型换变成false
其他类型转数值的说明
1、布尔true为1,false为0
2、字符串转数值有自己的规则
2.1以字母开头的字符串,永远为0
2.2 以数字开头的字符串,取到碰到字符串为止(不会同时包含两个小数点)
通过一组类型判断函数,来判断变量,最终返回这个变量所保存数据的数据类型(相同结果为true,失败为false):是一组以is_开头后面跟类型名字的函数:is_XXX(变量名)
Bool类型不能用echo来查看,可以使用var_dump结构查看
Var_dump(变量1,变量2…)
还有一组函数可以用来获取以及设定数据(变量)的类型
Gettype(变量名):获取类型,得到的是该类型对应的字符串
Settype(变量名,类型):设定数据类型:与强制转换不同
1、强制转换(类型)变量名,是对数据值复制的内容进行处理(不会处理实际存储的内容)
2、Settype会直接改变数据本身
整数类型:保存整数数值(范围限制),4个字节存储数据,最大就是32位:42亿多。但是在PHP中默认是有符号类型(区分正负数)
在PHP中提供了四种整型的定义方式:十进制定义,二进制定义,八进制定义和十六进制定义
$a = 120; //10进制
$a = 0b110; //2进制
$a = 0120; //8进制
$a = 0x120; //16进制
十进制:逢10进1,能够出现的数字是0-9
二进制:逢2进1,能够出现的数字是0-1
八进制:逢8进1,能够出现的数字是0-7
十六进制:逢16进1,能够出现的数字是0-9以及a-f,a表示10,以此类推
10进制转二进制:除2倒取余法
不管得到的结果如何,需要补足32位:前面补0
10进制转二进制:取出最大的2的N次方,直到结果为0
二进制转换到十进制:从右侧开始,将对应的第几位作为2的指数,然后将所有的结果相加
PHP中提供了很多函数进行转换
Decbin():十进制转二进制
Decoct():十进制转八进制
Dechex():十进制转十六进制
Bindec():二进制转十进制
浮点型:小数类型以及超过整型所能存储范围的整数(不保证精度),精度范围大概在15个有效数字左右
浮点型定义有两种方式:
$f = 1.23;
$f = 1.23e10; //科学计数法,其中e表示底10
尽量不用浮点数做精确判断:浮点数保存的数据不够精确,而且在计算机中凡是小数基本上存的都不准确
布尔类型:两个值true和false,通常是用于判断比较
在进行某些数据判断的时候,需要特别注意类型转换
Empty():判断数据的值是否为“空”,不是NULL,如果为空返回true,不为空返回false
Isset():判断数据存储的变量本身是否存在,存在变量返回true,不存在返回false
运算符知识点与java,JavaScript,C语言,作为语言基础都是相同的
不同之处:
连接运算:是PHP中将多个字符串拼接的一种符号
. :将两个字符串连接到一起
.= :复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量
A .= b 等价于 A = A . b
在PHP中有一些错误可以提前预知,但是这些错误可能无法避免,但是又不希望报错给用户看,可以使用错误抑制符处理。
@:在可能出错的表达式前面使用@符号即可
错误抑制符通常在生产环境(上线)会用到,在开发的时候不会用:系统本身最好没有任何错误。
计算机码:计算机在实际存储数据的时候,采用的编码机制(二进制规则)(补码参与运算)
计算机码:原码、反码和补码,数值本身最左边一位是用来充当符号位:正数为0,负数为1
原码:数据本身从十进制转换成二进制得到的结果
正数:左边符号位为0(正数的原码、反码和补码就是原码本身)
负数:左边符号位为1
反码:针对负数,符号位不变,其他位取反
补码:针对负数,反码+1
系统中存在两个0:+0和-0
+0: 00000000
-0: 10000000 原码
取反 11111111
补码 00000000
位运算:取出计算机中最小的单位(位bit)进行运算
&:按位与,两个位都为1,结果为1,否则为0
|:按位或,两个有一个为1,结果为1
注意:
1、系统进行任何位运算的时候都是使用的补码
2、运算结束之后都必须转换为原码才是最终要显示的数据
^:按位异或,两个相同则为0,不同则为1
<<(可以接数字,即移几位数):按位左移,整个位(32位),向左移动一位,右边补0
>>:按位右移,整个位(32位),向右移动一位,左边补符号位对应内容(正数补0,负数补1)
按位左移:乘以2的操作
按位右移:除以2的操作(不完全正确):整数除2会出现小数
在PHP中,主要常用的有if分支语句和switch语句
其使用原理与C语言,java,JavaScript相同
循环结构除了常见的
For循环,while循环,do-while循环,还有一个foreach循环:专门针对数组
流程控制替代语法:分支和循环结构的替代语法
PHP本身是嵌入到HTML中的脚本语言,需要在HTML中书写一些关于判断或者循环的结构语法,必须符合PHP标签规范,需要HTML与PHP进行混搭,如果使用原始的PHP代码那么会非常不美观。
在PHP中书写到HTML中的这些大括号{}非常不美观,所以PHP提供了一种替代机制,让其可以不用书写大括号:
For(;;){ =→for(;;):
} =→endfor;
PHP中提供了对应分支结构和循环结构的替代语法,全部都是对应的一个模式:
左大括号{使用冒号替代:
右大括号}使用end+对应的起始标记替代
If:if(): endif;
Switch:switch(): endswitch;
For
While
foreach