第一章、PHP基础
PHP是一种适合Web开发的编程语言,运行于服务器端,可以在C/S架构中为客户端软件提供服务器接口,又可以在B/S上作为架构来搭建动态网站。(本篇文章以B/S架构为基础)
Apache为PHP提供工作环境
Apache
目录结构
默认监听端口号:80
默认站点目录:http://localhost
错误页面
状态码 | |
403 | Forbidden;拒绝访问 |
404 | Not Found;页面没有找到 |
500 | Internal Server Error;服务器内部错误 |
1xx 信息提示:这些状态代码表示临时的响应
2xx 成功:这类状态代码表明服务器成功地接受了客户端请求。
3xx 重定向:客户端浏览器必须采取更多操作来实现请求。例如:浏览器可能不得不请求服务器上其他不同的页面,或通过代理服务器重复该请求。
4xx - 客户端错误:发生错误,客户端出现问题。例如,客户端请求不存在的页面,客 户端未提供有效的身份验证信息。
5xx - 服务器错误:服务器由于遇到错误而不能完成该请求。
第二章、PHP基本语法
标记与注释
标记
标记类型 | 开始标记 | 结束标记 |
标准标记(最优) |
< ? php | ? > |
短标记(需要将) | < ? | ? > |
注释
注释类型 | 格式 |
C++(常用) |
/ / |
C | / *……* / |
Shell | # |
输出语句
输出语句类型 | 含义 |
echo | 可包含多个,用“ ,”隔开 |
与echo用法相同,只能输出一个值 | |
print_r() | 内置函数,可以输出任意类型 |
var_dump() | 打印一个或多个类型的数据,还可以获取元素类型和个数 |
PHP标识符
- 只能由字母、数字、下划线组成,且不能包含空格
- 必须以字母、下划线开头
- 长度任意
- 用作变量名时,区分大小写
数据与运算
定义常量
常量定义方式 | 实例 |
define()函数 | define('常量名称','常量值',true/false:用于设置常量名是否对大小写敏感) |
const关键字 | cinst 常量名 = 常 量值 |
定义变量
PHP是弱语言,可以事先不申明就可以直接进行赋值使用
申明变量: $ 变量名
赋值方式 | 实例 |
传值赋值 | $ 变量名 = 值 |
引用赋值 | $ 变量名 = &(引用)$变量名 |
可变变量 | 套娃; $a = 'ni'; $ni = 'hao'; $hao = 'ma'; echo $a, ' ' ,$ $a ' ' ,$ $ $a; 返回:ni hao ma |
数据类型
- 布尔型 bool :true/false
- 整型 int
进制数 表示10 八进制 012 十进制 10 十六进制 0xa -
浮点型
-
字符串型
转义字符
字符 | 含义 |
\n | 换行 |
\r | 回车 |
\t | 水平指标符 |
\v | 垂直指标符 |
\e | Escape |
\f | 换页 |
\\ | 反斜线 |
\$ |
美元标记 |
\" | 双引号 |
数据类型转换
- 自动类型转换:PHP会自动进行数据类型转换
- 强制类型转换:在要转换的数据和变量前加上“(目标类型)”
运算符及优先级
- 算数运算符
- 字符串运算符 “ . ”:用于拼接两个字符串的运算符,拼接的类型都会自动转为字符串类型。
- 赋值运算符
- 比较运算符 "==="全等、"!=="不全等:不仅比较数值还要比较数据类型;"=="、"!="就只用比较值就行。
- 逻辑运算符 "&&"和"and"都是表示与,但"&&"优先级更高;"xor"表示异或。
- 递增递减运算符
- 位运算符
- 错误控制运算符 "@"放在要忽略的表达式错误前
流程控制语句
- 选择结构语句
- if单分支
if($score>=60){
echo '及格啦!';
}
- if...else语句
if(score>=60){
echo '及格啦!';
}else{
echo '挂科了。';
}
- if...elseif...else语句(可以有很多个elseif,和switch有点类似)
- switch语句
switch (表达式){
case 值1:代码段1;break;
case 值2:代码段2;break;
defaul:代码段n;
}
2.循环结构语句
- while语句
while(循环条件){
循环体;
}
- do...while 语句
do{
循环体;
}while(循环条件);
- for循环语句
for(定义变量;循环条件;变量自增或自减){
代码段;
}
3.跳转语句
- break语句
- continue语句
4.文件包含语句
include '文件路径';
第三章、函数
函数定义语法结构
访问函数外定义的变量,需要使用'global'关键字
function函数名([参数1,参数2,……])
{
函数体……
要是想要函数的返回值,就需要使用return关键字
}
参数设置
在函数中定义的变量在函数调用完了就会被释放
参数 | 示例 |
无参函数 | 函数体内需要有return |
按值传递 | function 函数名(参数1,参数2,……){};在引用的时候可以使用变量代替 |
引用传参 | 修改参数值function(&$ 变量名);用于全局变量 |
设置参数默认值 | 可以在定义函数时设置默认参数 |
指定参数类型 | PHP7.0版本后可以设置参数的数据类型(跟C语言格式差不多) |
嵌套调用
- 嵌套调用
在调用一个函数时,调用其他的函数,下面给个例子:
<?PHP
function sum($score1,$score2)
{
return $sun =$score1+$score2;
}
function avg($score1,$score2)
{
$sum = sum($score1,$score2);
return $avg = $sum/2;
}
echo avg(90,92) //返回值就是91
- 递归调用
一个函数在其函数体内调用自己
<?PHP
//编写一个N的阶乘的函数作为例子
function jiecheng($n)
{
if(n == 1){
return 1;
}else{
return $n*jiecheng($n - 1);
}
}
echo jiecheng(4) //返回24
高级应用
- 静态变量
想要调用函数后,值能够保存就要使用静态变量:
<?PHP
function num($i)
{
static $i = 1;//申明为静态变量后,在每次被调用都会保存i的值
//要是是 $i = 1;那就每次调用函数的时候都是i = 1;
echo $i;
++i;
}
- 可变函数
怎么说呢,这个函数,其实是一个规定,有点像可变变量($ 变量名)的用法你定义了一个函数,如果你想在某个变量里面使用的时候就在后面加一个"()"让它近似变成函数名的结构就行了。
这也说明一个问题,你可以用一个变量来代替函数名称。
<?PHP
function a()
{
echo 'come on';//申明了一个函数a,可以打印come on
}
$b = 'a';
//给b赋值为a,但是a是一个函数的名称,想调用a的话就可以像下面一行一样
echo $b();//加个括号就行
- 回调函数
一般用于参数传递
call_user_func作为PHP的内置函数,可以接受用户自定义的回调函数作为参数
<?PHP
function sum($a,$b)
{
return $a+$b;
}
call_user_func('sum',4,5);//输出结果:9
//call_user_func作为PHP的内置函数,将参数进行回调再输出结果
- 匿名函数
没有函数名称的函数,也称作闭包函数,一般用于临时定义的函数,用匿名函数就无需担心函数名称命名冲突的问题了。
<?PHP
function ($a,$b)//没有函数名称
{
return $a + $b;
}
echo $sum4,5);//没有函数名就加个括号引用参数就行了
PHP内置函数
- 字符串函数
- 一般括号"()"内第一个表示需要操作的字符串,第二个表示操作的起始位置,第三个表示操作的位数,若第三个被省略的话那就是一直操作到最后。
函数名称 | 功能描述 |
strlen() | 获取字符串长度 |
strpos() | 查找字符串首次出现的位置 |
strrpos() | 查找字符串最后一次出现的位置 |
str_replace() | 对字符串中的某些字符进行替换操作 |
substr() | 获取字符串中的子串 |
explode() | 使用一个字符串分割另一个字符串 |
implode() |
用指定的连接符将数组连接成一个字符串 |
trim() | 用指定字符串的首尾的空白字符 |
str_repeat() | 重复一个字符串 |
strcmp() | 用于判断两个字符串的大小 |
- 数学函数
函数名 | 功能描述 | 函数名 | 功能描述 |
abs() | 取绝对值 | min() | 取最小值 |
max() | 取最大值 | pi() | 取圆周率的值 |
ceil() | 向上取最接近的整数 | floor() | 向下取最接近的整数 |
fmod() | 取除法的浮点数余数 | pow() | 计算x的y次方 |
is_nan() | 判断是否为合法数值 | sqrt() | 取平方根 |
round() | 对浮点数进行四舍五入 | rand() | 随机生成整数 |
- 时间日期函数
函数名 | 功能描述 |
time() | 获取当前的UNIX时间戳 |
date() | 格式化一个本地时间/日期 |
mktime() | 获取指定日期的UNIX时间戳 |
shortime() | 将字符串转化成UNIX时间戳 |
microtime() | 获取当前的UNIX时间戳和微秒数 |
UNIX时间戳是表示格林威治时间1970年01月01日00时00分00秒到现在的总秒数
格式化时间戳
echo date('Y-m-d H-i-s');
第四章、数组
要是操作一批数据的话,你每一条信息都用一个变量来定义的话就很麻烦,而且这些数据一般都有一定的关联性,你把它们串在一起定义成一个数组不是很方便。那也就引出了这个章节要讲的内容。
在PHP中,数组是由一个或多个数组元素组成的,每个数组由键和值组成:"键"是元素的识别名称,"值"是元素内容;"键"和"值"存在一定对应关系称为"映射"。
数组构成:数组是由一个或多个数组元素组成的
数组元素:一每个数组元素由键(Key)和值(Value)构成
键:“键”为元素的识别名称,也被称为数组下标
值: “值”为元素的内容
映射: “键”和“值”之间存在一种对应关系,称之为映射
类型划分:根据键的数据类型,可以将数组划分为索引数组和关联数组
数组类型
- 索引数组
键为整数的数组,一般情况是从0开始,用来标记元素的位置,当然也可以自己定义;你要是不设置键的话基本上默认索引数组。
键 | 0 | 1 | 2 | 3 |
值 | 21 | 43 | 215 | 43 |
- 关联数组
键为字符串的数组,一般都是键和值有一定的逻辑关系;需要你自己定义键。
键 | 姓名 | 年龄 | 性别 | 电话 |
值 |