PHP
php是世界上最好的语言…IS GOD
PHP代码标记
- ASP标记 <% php代码 %>
- 短标记 <? php代码 ?>
- 脚本标记
- 标准标记(常用): <?php php代码?>
PHP注释
语句分割符
变量
- 用来存储数据
- 变量存在名字
- 通过变量访问
- 可以改变
- 使用
-
- 定义?$变量名
-
- 赋值 $name=1;
-
- 可通过变量名访问数据 echo $name;
-
- 可以删除 unset($name)
命名规则
- 必须以 “$” 开始
- 由字母、数字、下划线构成,但不能以数字开通
预定义变量
- $_GET:获取所以表单以get方式提交的数据
- $_POST:POST提交的数据保存
- $_REQUEST:GET和POST提交都会保存
- $GLOBALS:PHP中所以的局部变量
- $_SERVER:服务器信息
- $_SESSION:session会话数据
- $_COOKIE:cookie会话数据
- $_ENV:环境信息
- $_FILES:用户上传的文件信息
可变变量
- $a = ‘b’; $b = ‘bb’; echo $$a;
变量传值
- 将一个变量传递给另外一个变量
- 值传递:值
- 引用传递:地址 &
常量
定义形式
- 使用定义常量的函数: define(‘常量名’,常量值);
- const 常量名 = 常量值;
系统常量
- PHP_VERSION:PHP版本号
- PHP_INT_SIZE:整型大小
- PHP_INT_MAX:整型能表示的最大值
魔术常量
- DIR:当前被执行的脚本所在电脑的绝对路径
- FILE:当前被执行脚本所在电脑的绝对路径
- LINE:当前所属的行数
- NAMESPACE:当前所属的命名空间
- CALSS:当前所属的类
- METHOD:当前所属的方法
数据类型
简单(基本)数据类型
- 整型:int/integer 4个字节
- 浮点型:float/double 8个字节
- 字符串型:string
- 布尔类型:bool/boolean
符合数据类型
- 对象类型:object 存放对象
- 数组类型:array
特殊数据类型
- 资源类型:resource,存放资源数据
- 空类型:NULL
类型转换
- 布尔true为1,false为0
- 字符串转数值由自己的规则
- 以字母开头的字符串,永远为0
- 以数字开头的字符串,渠道配到字符串为止
类型判断
- is_XXX(变量名)
- Bool类型:Var_dump(变量1,变量2…)
- Gettype(变量名):获取类型
- Settype(变量名,类型):设置数据类型,与强制转换不同
整型
- Decbin():十进制转二进制
- Decoct():十进制转八进制
- Dechex():十进制转十六进制
- BinDEC():二进制转十进制
运算符
赋值运算符
算数运算符
比较运算符
- ‘>’
- ‘>=’
- ‘<’
- ‘<=’
- ‘==’
- ‘!=’
- ‘===’:全等于,左边与右边相同,大小以及数据的类型相同
- ‘!==’:不全等于
逻辑运算符
连接运算符
- ‘.’:将两个字符串连接在一起
- ‘.=’:符合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量
错误抑制符
三目运算符
- 表达式1 ? 表达式2 : 表达式3
- 如果表达式1成立,那么执行表达式2,否则执行表达式3
自操作运算符
分支结构
if分值
if(条件表达式){
//满足条件索要执行的内容
}
if(条件表达式){
//满足条件后执行的代码
}else{
//不满足条件后执行的代码
}
if(条件表达式1){
//满足表达式1的代码
}elseif(条件表达式2){
//不满足1但满足2
}...
else{
//都不满足
}
switch分支
switch(条件表达式){
case 值1:
//要执行的代码
break;
case 值2:
//要执行的代码
break;
...
default:
break;
}
循环结构
for循环
for(条件表达式1;条件表达式2;条件表达式3){
//条件表达式1:帝国一初始化条件,可以由多种复制语句存在
//条件表达式2:边界定义,现顶循环执行次数
//条件表达式3:用来执行条件变化
//循环体
}
while循环
while(条件表达式){
//条件表达式就是判断边界条件
//循环体 循环条件的变化
}
do…whlie循环
先执行循环体,后判断条件,至少执行一次循环体
do{
//循环体
}
while(条件表达式)
循环控制
流程控制替代语法
for(){ =>for():
} => endfor;
- 左大括号{用冒号代替:
- 右大括号)用end+对于的起始标记替代
常用函数
有关输出的
- print()
- print_r():类似于var_dump,但简单,不会输出数据类型,指挥输出值
有关时间的
- date():按照指定格式对对应的时间戳。
- time():获取当前时间对应的时间戳。
- microtime():获取微秒级别的时间
- strtotime():按照规定格式的字符转转换为时间戳
文件操作
文件包含
- 在一个php脚本中,去将另一个文件(PHP)包含进来,去合作完成一件事情。
文件包含作用
- 要么使用被包含文件的内容,实现代码的共享(重用):向上包含(索要)
- 要么自己有东西可以给别的文件使用,实想代码的共享(重用):向下包含(给与)
- 最大的作用:分工协作,每个脚本做的事情不一样,因此可以使用写作方式,共同完成一件事。
四种形式
- include:包含文件
- include_once:系统会自动判断文件包含过程,是否已经包含过
- require:与include相同
- require_once:与include_one相同
include '文件名字';
include('文件名字');
文件加载
- 在文件加载(include或者require)的时候,系统会自动的将杯包含文件中的代码相当与嵌入到当前文件中
- 加载位置:在哪加载,对应的文件中的代码嵌入的位置
- 在php中被包含的文件是单独进行编译的
include和require区别
- include和include_once的区别:include系统会碰到一次执行一次;include_once碰到多次也只会执行一次。
- require和include区别:本质一样,唯一的区别在于包含不到文件的时候,报错的形式不一样。include较轻。
文件加载路径
- 绝对路径:
- 相对路径:从当前文件所在目录开始
函数
基本概念
- function,是一种语法结构,将实想某一个功能的代码块(多行代码)封装到一个结构中,从而实现代码的重复利用
函数定义语法
- 关键点:function关键字、函数名、参数、函数体和返回值
Function函数名([参数]){
//函数体
//返回值:return 结果;
}
函数命名规范
- 驼峰法:除了第一个单词外,后面所有的单词都大写。
- 下划线法:单词之间通过下划线连接,单词都是小写。
参数详解
- 形参:形式参数,不具有实际意义的参数,实在函数定义是使用的参数
- 实参:实际参数,橘柚实际数据意义的参数,是在函数调用时使用的参数
- 形参时实参的载体
引用传递
- 实参在调用时会将值赋值个形参,那么实际上使用的方式就是一种简单的值传递;将实参(如果是变量或者常量或者其他表达式)的结果(值)取出来赋值给形参:形参与外部实际传入的参数本身没有人格关联关系,只是结果一样。
- 有的时候,希望在函数内部拿到的外部数据,能够在函数内部改变,那么就需要明确告知函数(定义时),函数才会在调用的时候去主动获取外部数据的内存地址。以上这种定义形式参数的方式叫做引用传值。
function 函数名(形参1,&形参2){
//函数体
}
- 在调用的时候,必须给引用传值的参数位置传入实际参数,而且参数本身必须时变量。(变量才有指向的数据的内存地址)
函数体
函数返回值
作用域
- 变量可以在普通代码中定义
- 变量也可以在函数内部定义
- 在PHP中作用域严格来说分为两种:但是PHP内部还定义一些在严格意义之外的一种,所以总共算三种:
- 全局变量:用户普通定义的变量,所属全局空间,在PHP中只允许在全局空间使用,理论上函数内部不可;脚本周期:直到脚本允许结束
- 局部变量:在函数内部定义的变量;在PHP中只允许在当前函数自己内部使用;函数周期:函数执行结束
- 超全局变量:系统定义的变量(预定义变量:$_SERVER$_POST等);所属超全局空间(函数内外都可以访问)
- 在pHP中,有一种方式,能够实现全局访问局部,同时局部也可以访问全局:global关键字
- Global关键字:是一种在函数里面定义变量的一种方式
- 如果使用global定义的变量在外部存在(全局变量);那么系统在函数内部定义的变量直接指向外部全局变量所指向的内部空间(同一个变量);
- 如果使用global定义的变量在内部存在(全局变量);系统会自动在全局空间定义一个与局部变量统么的全局变量
Global 变量名; //不能赋值
变量名 = 值; //修改
静态变量
- static,是在函数内部定义的变量,使用static关键字修饰,用来实现函数共享数据的变量
function 函数名(){
//定义变量
static $变量名 = 值; //通常会在定义的时候直接赋值
}
可变函数
- 当前有一个变量所保存的值,刚好是一个函数的名字,那么就可以使用函数+{}来充当函数名使用。
匿名函数
变量名 = function(){
函数体
};
- 闭包:closure,函数内部有一些局部变量(要执行的代码块)在函数执行之后灭有被释放
伪类型
- 假类型,实际上在PHP中不存在的类型。但是通过伪类型可以帮助程序员去更好的查看操作手册从而更方便学习。
- Mixed:混合的,可以是多种PHP中的数据类型
- NumberL数值的,可以是任意数值类型(整型和浮点型)
常用系统函数
- 有关输出的函数
- print():
- print_r():类似于var_dump,但是币var_dump简单,不会输出数据类型的类型,指挥输出值(数组打印使用比较多)
- 有关时间的函数
- date():
- time():获取当前时间对应的时间戳
- microtime();获取微秒级别的时间
- 有关数学的函数
- max():最大值
- min():比较两个数最小值
- rand():得到一个随机数
- mt_rand():与rand一样,只是底层结构不一样,效率币rand高
- round():四舍五入
- ceil():向上取整
- floor():向下取整
- pow():求指点数字的只当指数次结果:pow(2,8) == 2^8 == 256
- abs():绝对值
- sqrt():平方根
- 有关函数的函数
- function_exists():判断指定的函数名字是否在内存中存在(帮助用户不去使用一个不存在的函数,让代码安全性更高)
- func_get_arg():在自定义函数中去获取指定数值对应的参数
- func_get_args():在自定义函数中获取所有的参数(数组)
- func_num_args():获取当前自定义函数的参数数量
错误处理
- 系统或者用户在对某些代码进行执行的是很好,发现有错误,就会通过错误处理的形式告知程序员
错误分类
- 语法错误
- 运行时错误
- 逻辑错误
错误代号
- 系统错误
- E_PARSE:编译错误,代码不会执行
- E_ERROR:致命错误,会导致代码不能正确继续执行
- E_WARNING??警告错误,不影响代码执行
- E_NOTICE:notice,通知错误,不会影响代码执行
- 用户错误:E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE
- 其他:E_ALL:代表所有错误
错误显示设置
- PHP的配置文件:全局配置:PHP.ini文件:Display_errors:是否显示错误;error_reporting:显示哪些错误
- 可以在运行的PHP脚本中设置
- Error_reporting():设置对应的错误显示级别
- Ini_set(‘配置文件中的配置项’,配置值)
- Ini_set(‘error_reporting’,E_ALL);
- Ini_set(‘display_errors’,1);
字符串类型
字符串定义语法
- 单引号字符串
- 双引号字符串
- nowdoc字符串
- heredoc字符串
字符串转义
- 含义:在计算机通用协议中,有一些特定的方式定义的字母,系统会特定处理:这种方式都是使用反斜杠+字母(单词)的特性:\r\n:回车换行
- ':在单引号字符串中显示单引号
- ":在双引号字符串中显示双引号
- \r:代表回车(理论上是回到当前行的首位置)
- \n:代表新的一行
- \t:类似tab键,输出4个空格
- $:在PHP中使用$符号作为变量符号,因此需要特定识别
- 其中单引号中能够识别’,而双引号不能识别
- 双引号中能够识别$符号,所以双引号中可以解析变量,而单引号不可以
- 双引号中变量识别的规则
- 变量本身系统能够与后面的内容区分:应该保证变量的独立性,不要让系统难以区分。
- 使用变量专业表示符(区分),给变量加上一组大括号{}
- 结构化定义字符串的变量的规则
- 结构化定义字符串对应的边界符有条件
- 上边界符后面不能跟任何内容
- 下边界符必须顶格,最左边
- 下边界同样后面只能跟分号,不能跟任何内容
- 结构化定义字符换的内容(边界符之间)的所有内容都是字符串本身
字符串长度相关问题
- 基本函数strlen():字节为单位
- 多字节字符串的长度问题:包含中文的长度
- 多字节字符串扩展模块:mbstring扩展(mb:Multi Bytes),首先需要加载PHP的mbstring扩展;可以使用mb扩展带来的许多函数。
字符串相关函数
implode(连接方式,数组):将数组中的元素按照某个规则连接成一个字符串
explode(分割字符,目标字符串):将字符串按照某个格式进行分割,变成数组 str_split(字符串,字符长度):按照指定长度拆分字符串得到数组
trim(字符串,[指定字符]):本身默认是用来去除两边的空格
rtrim():去除右边的
substr(字符串,起始位置从0开始,[长度]):
strstr(字符串,匹配字符):
strtoupper():全部小写
strtoupper():全部大写
ucfirst(): 首字母大写
strops():判断字符在木匾字符串中出现的位置(首次)
strrpos():最后一次
str_replace(匹配目标,替换的内容,字符串本身):将目标字符串中部分字符进行替换
printf/sprintf(输出字符串有占位符,顺序占位内容):格式画输出数据
str_repeat(字符串,n):重复字符串n次
str_shuffer():随机打乱字符串
数组
- array,数据的组合,将一组数据存储到一个指定的容器,用变量指向该容器,然后可以通过变量一次性得到该容器中的所有数据
数组定义语法
- 使用array关键字:最常用
$变量=array(元素1,元素2,元素3) - 可以使用中括号包裹数据。
$变量 = [元素1…] - 隐形定义数组:给变量增加一个中括号,系统自动变成数组
$变量[] = 值1 $变量[下标] = 值
PHP数组特点
- 可以证书下标或字符串下标
如果数组下标都为整数:索引数组 如果数组下标都为字符串:关联数组 - 不同下标可以混合存在:混合数组
- 数组元素的顺序以放入顺序为准,跟下标无关
- 数字下标的自增长特性:从0开始自动增长,如果中间出现手动较大的,那么后面的自增长元素从最大的值+1开始
- 特殊值下标的自动转换
- PHP中数组元素没有类型限制
- PHP中数组元素没有长度限制
- PHP中的数组是很大的数据,所以存储在堆区,为当前数组分配一块连续的内存
多维数组
- 二位数组
- 多维数组
- 在二维数组元素中可以继续是数组,在PHP中没有维度限制,不建议使用超过三维以上的数组,会增加访问的复杂度,降低访问效率
- 异性数组
数组遍历
foreach($数组变量 as[$下标 =>] $值){
//通过$下标访问元素的下标,通过$值访问元素的值
}
- for循环:基于与之边界条件(起始和结束)然后有条件的变化
- 获取数组长度:count(数组)得到数组的元素
- 要求数组元素的下标是规律的数字
- while配合each和list遍历数组
- while是在外部定义边界条件,如果要实现可以和for循环
- each函数的使用,each能够从一个数组中获取当前数组指针所指向的元素的下标和值,拿到之后将数组指针下移,同时将拿到的元素下标和值以一个四个元素的数组返回
- list函数使用:list是一种结构,不是一种函数(没有返回值),是list提供的一堆变量去从一个数组中获取元素值,然后依次存放到对应的变量当中(批量为变量赋值:之来源于数组):list必须从索引数组中获取数据
数组相关函数
- 排序函数
sort():顺序排序(下标重排)
rsort():逆序
asort():顺序排序(下标保留)
rasort():逆序
ksort():顺序排序:按照键名(下标)
krsort():逆序
shuffle():随机打乱数组元素
- 指针函数
reset():重置指针,将数组指针回到首位
end():重置指针,将数组指针回到末尾
next():指针下移,取得下一个元素的值
prev():指针上移
current():获取当前指针对应的元素值
key():获取当前指针对应的下标值
- 其他函数
count():统计数组元素数量
array_push():往数组中加入一个元素(数组后面)
array_pop():从数组中取出一个元素(数组后面)
array_shift():从数组中取出一个元素(数组前面)
array_unshift():往数组中加入一个元素(数组前面)
array_reverse():数组元素反过来
in_array():判断一个元素在数组中是否存在
array_keys():获取一个数组的所有下标,返回一个索引数组
array_values():获取一个数组的所有制,返回一个索引数组
|