你好! 这是我自己编辑的一些知识点。如果你想学习PHP的有关知识, 可以仔细阅读这篇文章,了解一下关于PHP的基本语法知识。
PHP
PHP(“PHP: Hypertext Preprocessor”):超文本预处理器,一种服务器的HTML脚本/编程语言,是一种开放源代码,该语言让web开发人员快速的书写动态生成的网页。
语法
PHP代码标记
在PHP历史发展中,可以使用多种标记来区分PHP脚本。
- ASP标记:<% php代码 %>
- 短标记:<? php代码 ?>
- 脚本标记:<script language='php'>php代码</script>script>
- 标准标记(常用):<?php ?>
注释
单行文本注释
//
多行文本注释
/**/
注意:
- 分隔符使用英文状态下的分号(;)
- PHP中标记结束符?>有自带语句结束符的效果,最后一行PHP代码可以没有语句结束符
- PHP中其实很多代码的书写并不是嵌入到HTML中,而是单独存在,通常书写习惯中就不建议使用标记结束符?>,PHP会自动从开始到最后全部认为是PHP代码,从而解析。
变量
- PHP中的所有变量都必须使用’$’
- 名字由字母、数字和下划线“—”构成,但是不能以数字开头
- 在PHP中本身还允许中文变量(不建议使用)
$var2=2;
//删除变量:使用unset(变量名字)
unset($var2);
echo $var2;
预定义变量
预定义变量:提前定义的变量,系统定义的变量,存储许多需要用到的数据(预定义变量都是数组)
变量 | 描述 |
---|---|
$_GET | 获取所有表单以get方式提交的数据 |
$_POST | POST提交的数据都会保存在此 |
$_REQUEST | GET和POST提交的都会保存 |
$_GLOBALS | PHP中所有的全局变量 |
$_SERVER | 服务器信息 |
$_SESSION | session会话数据 |
$_COOKIE | cookie会话数据 |
$_ENV | 环境信息 |
$_FILES | 用户上传的文件信息 |
变量命名规则:
1.常量不需要使用“$”符号,一旦使用系统就会认为是变量;
2.常量的名字由字母、数字、下划线组成,不能以数字开头;
3.常量的名字通常是以大写字母为主(与变量以示区别);
4.常量命名规则比较变量要松散,也可以使用一些特殊字符,该方式只能使用define定义
注意:
1.define和const定义的常量是有区别的:在于访问权限区别;
2.定义常量通常不区分大小写,但是可以区分,可以参照define函数的第三个参数
3.变量类型
类型 | 描述 |
---|---|
整型interger | 数学中的整数 |
浮点型float/double | 数学中的小数 |
字符串string | 一串字符 |
数组array | 键值对的复合数据 |
对象object | 在面向对象中学 |
NULL | 没有值(不区分大小写) |
布尔值boolean | 真假(不区分大小写) |
资源resource | 类似‘吸管’ |
-
isset()检测变量是否存在
-
empty()检测变量是否为空
-
gettype()检测类型
4.输出语句
-
echo ‘xx’;一般用于输出数字和字符串
-
print_r();一般用于输出数组
-
var_dump();一般用于输出数组,会打印出数组的元素的类型
字符串拼接
$name='tom';
$str='hello';
echo $name.$str;
运算符
算术运算符
+ - * / %
自增自减运算符
++ --
比较运算符
> >= < <= == === != !==
逻辑运算符
&& || !
赋值运算符
= += -= *= /= %=
条件语句
if语句
if (条件){
语句;
}else if (条件){
语句;
} else {
语句;
}
Switch语句
switch (表达式) {
case 值1: 语句;break;
case 值2: 语句;break;
...
default:
语句;
}
条件语句
for循环
for(初值;范围;递增) {
// 循环体
}
while循环
While(条件表达式) {
// 若条件成立,则执行这里的循环体
// 改变初值的条件 ;
}
do…while循环
do {
// 循环体
// 改变初值的条件 ;
} while(条件表达式);
数组
1.索引数组
$arr1=['hello','say','byebye'];
$arr2=array(23,56,34,12);
2.关联数组
$arr3=['class'=>'01','sex'=>'女','name'=>'lily'];
3.一维数组
$arr5= array('class'=>'01','sex'=>'女','name'=>'lily';
4.二维数组
$arr6=array( array('name'=>'saty','class'=>'num1','sex'=>'女'),
array('name'=>'daty','class'=>'num1','sex'=>'男')
);
5.三维数组
$arr1=array('冰箱'=>array(
'颜色'=>['银色', '金色'],'品牌'=>['海尔', '格力'],'产地'=>['北京', '上海']
)
,
'零食'=>array(
'量'=>['大袋', '小袋'],'品牌'=>['三只松鼠', '百草味'],'产地'=>['南京', '廊坊']
)
,
'服装'=>array(
'分类'=>['男装', '女装'],'品牌'=>['海澜之家', '361'],'产地'=>['保定', '廊坊']
)
);
遍历数组
1.count()是计算数组元素个数的方法
// count()计算长度
$arr7=array(3,23,67,95,23);
// for($i=0;count($arr7);$i++){
// echo $arr7[$i].'<br/>';
// };
2. k e y 代 表 数 组 中 元 素 的 索 引 号 , key代表数组中元素的索引号, key代表数组中元素的索引号,value代表数组中元素的值。
$arr8=array('name'=>'saty','class'=>'num1','sex'=>'女');
// foreach($arr8 as $key=>$value){
// echo $value.'<br/>';
// }
JSON_encode
json_encode —> 对变量进行 JSON 编码
$arr2=[
['id'=>'001','name'=>'adnjk','sex'=>'男'],
['id'=>'002','name'=>'wexk','sex'=>'女'],
['id'=>'003','name'=>'pohjk','sex'=>'女'],
];
echo JSON_encode($arr2);
页面访问为:
[{"id":"001","name":"adnjk","sex":"\u7537"},{"id":"002","name":"wexk","sex":"\u5973"},{"id":"003","name":"pohjk","sex":"\u5973"}]
**注意:**在HTML页面编写中显示的PHP的JSON_encode的转换内容为字符串。将PHP中的字符串转换为对象可在HTML中使用JSON.parse().
PHP连接数据库
mysqli
我们可以通过mysqli拓展库来实现PHP连接数据库,对数据库进行增删改查。
首先,新建一个PHP文件,输入phpinfo(),检查确认是否支持mysqli扩展。
在浏览器中访问PHP文件,Ctrl+f在搜索框中输入mysqli,查看是否支持
对数据库增删改
<?php
//1.创建连接
$host='localhost';//数据库所在的服务器地址
$user='root';//用户名
$pass='111111';//密码
$con=mysqli_connect($host,$user,$pass);//返回连接的对象
mysqli_select_db($con,'text');//选择数据库
mysqli_set_charset($con,'utf8');//设置字符集
// $sql='insert into yg(id,name,gender,birthday,email,pass) values(6,"不仅仅","女","2381-11-4","372@qq.com",786)';//执行sql语句->增加
// $sql='delete from yg where name="不仅仅"';//执行sql语句->删除
$sql='update yg set name="哈哈" where name="不仅仅"';//执行sql语句->修改
$res=mysqli_query($con,$sql);//响应
var_dump($res);//输出响应类型和值
mysqli_close($con);//关闭连接
对数据库查询
mysqli_fetch_assoc()
mysqli_fetch_assoc()方法是从数据库中获取一行数据的方法,返回值是字段名和值组成的关联数组。
<?php
$host='localhost';//地址
$user='root';//用户名
$pass='111111';//密码
$dbname='text';//数据库名
$con=new mysqli($host,$user,$pass,$dbname);mysqli_set_charset($con,'utf8');//返回连接的对象
if($con->connect_error){//->属性
die('数据库连接失败'.$con->connect_error);
}
$sql='select*from yg';//查询语句
$res=mysqli_query($con,$sql);
$arr=mysqli_fetch_assoc($res);//获取第一行的数据
echo '<pre>';
print_r($arr);
echo '</pre>';
mysqli_close($con);
添加表格案例
<?php
$host='localhost';
$user='root';
$pass='111111';
$dbname='text';
$con=new mysqli($host,$user,$pass,$dbname);
mysqli_set_charset($con,'utf8');
if($con->connect_error){
die('数据库连接失败');
};
$sql='select*from yg';
$res=mysqli_query($con,$sql);
$arr=[];
while($row=mysqli_fetch_assoc($res)){
$arr[]=$row;
};
// var_dump($arr);
mysqli_close($con);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table>
<thead>
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
</tr>
</thead>
<tbody>
<?php foreach($arr as $key=>$value){?>
<tr>
<td>
<?php echo $value['id']?>
</td>
<td>
<?php echo $value['name']?>
</td>
<td>
<?php echo $value['remark']?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</body>
</html>
-
mysqli_fetch_row:拿到的是一个索引数组,而且每调用一次是获取一行的数据。
-
mysqli_fetch_array:既可以获取关联数组又可以获取索引数组,每调用一次是获取一行的数据。
正则表达式
http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
作用:
- 注册页面时判断用户输入的内容是否符合验证规则
- 从整体字符串中看是否包含指定的字符串
- 找到符合规则的字符串进行替换
语法
$reg='/自定义的规则/';
元字符
元字符 | 说明 |
---|---|
a-z | 英文小写字母 |
A-Z | 英文大写字母 |
0-9 | 数字 |
\r \n \t | 非打印字符 |
\d | 数字,相对于0-9 |
\D | \d取反 |
\w | 字母数字下划线 |
\W | \w取反 |
\s | 空白字符 |
\S | 非空白字符 |
[] | 任意匹配[]中单个字符 |
. | 匹配任意字符(换行符除外) |
{n} | 匹配n次 |
{n,} | 匹配至少n次 |
{n,m} | 至少n次,最多m次 |
* | 匹配0个或多个,相对于{0,} |
+ | 匹配1个或多个,相对于{1,} |
? | 匹配0个或1个,相对于{0,1} |
^ | 1.匹配正则开头 2.放在[^],内容取反 |
$ | 匹配正则结尾 |
| | 匹配|两侧任选其一 |
() | 1.分组 2.子存储 |
验证方法
preg_match()
preg_match( r e g , reg, reg,str,[$arr]);只要找到一次符合正则表达式的结果就终止了,不会再往下匹配.
- $reg自定义的正则表达式
- $str要查询的字符串
- $arr匹配的结果
$str='haha world amy';
$reg='/a/';//a是否存在的规则
$res=preg_match($reg,$str);
var_dump($res);//int(1)
preg_match_all()
preg_match_all( r e g , reg, reg,str,[$arr]);匹配一次成功以后不会终止,会一直匹配到完
$str='haha world amy';
$reg='/a/';//a是否存在的规则
$res=preg_match_all($reg,$str);
var_dump($res);//int(3)
preg_replace()
$str='hello I"m jack';
$reg='/jack/';
$res=preg_replace($reg,'maliy',$str);
echo $res;
案例:
$reg1='/^[a-zA-Z0-9_-\x{4e00}-\x{9fa5}]{4,16}$/u';//用户名
//释:以小写字母|大写字母|数字|下划线|中横线|汉字命名,从开头至结尾,最少4位,最多16
$reg2='/^\w{6,16}$/';//密码
//释:以小写字母|大写字母|数字|下划线命名,从开头至结尾,最少6位,最多16
$reg3='/^1(3[0-9]|4[5,7]|5[0,1,2,3,5,6,7,8,9]|6[2,5,6,7]|7[0,1,7,8]|8[0-9]|9[1,8,9])\d{8}$/';//手机号
//释:第一位数字为1,第二位数字可为3|4|5|6|7|8|9,第二位为3时,第三位数字为0-9的数字;第二位为4时,第三位数字为5|7的数字;第二位为5时,第三位数字为0|1|2|3|5|6|7|8|9的数字;第二位为6时,第三位数字为2|5|6|7的数字;第二位为7时,第三位数字为0|1|7|8的数字;第二位为8时,第三位数字为0-9的数字;第二位为9时,第三位数字为1|8|9的数字;第四位至第11位位任意数字
$reg4='/^\d{15}$)|(^\d{17}([0-9]|X)$/';//身份证
//释:15位以数字开始至结束 | 17位任意数字第18位为0-9之间任一数字|X
库函数
库函数->内置函数:数学函数、字符串函数、数组函数、目录函数、文件系统函数、时间函数、错误处理函数。
数字函数
函数名 | 语法 | 说明 |
---|---|---|
rand | rand(min,max) | 返回一个随机整数 |
abs | abs(mixe) | 返回数字的绝对值 |
min | min(array) | 返回最小值 |
max | max(array) | 返回最大值 |
round | round(float) | 四舍五入 |
floor | floor(float) | 舍去小数部分取整 |
ceil | ceil(float) | 小数部分非零返回整数部分就加1 |
sqrt | sqrt(float) | 返回平方根 |
// 数学函数
// echo rand(1,10);//随机数包左且包右
// echo max(10,20,30);//最大
// echo min(10,20,30);//最小
// echo round(5.6);//四舍五入
// echo floor(5.5);//向下取整
// echo ceil(5.5);//向上取整
字符串函数
函数 | 功能 |
---|---|
trim() | 去除字符串首尾空白等特殊符号或指定字符序列 |
strtolower() | 转换为小写 |
strtoupper() | 转换为大写 |
strip_tags() | 函数剥去HTML、XML以及PHP的标签 |
md5() | 字符串加密 |
strlen() | 字节长度 |
substr() | 字符串截取函数 |
str_replace() | 字符串替换函数 |
str_repeat() | 重复一个字符串 |
explode(符号,字符串) | 字符串->数组 |
implode(符号,数组) | 数组->字符串 |
/ 字符串函数
$str1='say ';
// echo strlen(trim($str1));//trim滤掉两侧空白
// echo strlen($str1);//字符串长度包含空格
$str2='SAY';
// echo strtolower($str2);//字符串转小写字母
$str3='say';
// echo strtoupper($str3);//字符串转大写字母
$str4='say hello world';
// echo str_replace('hello','hi',$str4);//字符串替换
// echo str_repeat('hi',4);//字符串重复
$str5='hi world I"m jack';
$str5=explode(' ',$str5);//把字符串切割成数组
// echo '<pre>';
// var_dump($str5);
// echo '</pre>';
$arr1=['hi','world','I"m','jack'];
$str6=implode(' ',$arr1);//把数组中的元素转换成字符串
// echo $str6;
数组函数
函数 | 功能 |
---|---|
array_values() | 数组中所有的值放入一个新的索引数组,并返回 |
array_keys() | 数组中所有的键放入一个新的索引数组,并返回 |
array_revers() | 颠倒数组顺序 |
in_array(元素,数组) | 检查数组中是否存在某个值 |
count() | 计算个数 |
array_unshift() | 在数组开头插入一个元素 |
array_push() | 在数组尾部插入一个元素 |
array_unique() | 移除数组中的重复值 |
array_pop() | 删除数组最后一个 |
array_shift() | 删除数组第一个 |
array_splice(数组、索引、数量) | 删除指定数组 |
sort() | 排序(升序) |
rsort() | 排序(降序) |
array_merge() | 合并一个或多个数组 |
array_rand() | 数组中随机抽取一个 |
range(起始数,终止数) | 自动生成一个起始数到终止数的新数组 |
shuffle() | 打乱数组的顺序 |
// 数组函数
$arr2=array(
'id'=>'01',
'name'=>'hello',
'class'=>'03'
);
$res1=array_keys($arr2);//由键名组成的数组
$res2=array_values($arr2);//由键值组成的数组
$res3=array_reverse($arr2);//颠倒数组的顺序
// echo '<pre>';
// var_dump($res3);
// echo '</pre>';
$arr3=['tom','jack','lily'];
$res4=in_array('tom',$arr3);//判断tom是否在数组$arr3中
// var_dump($res4);//true
// echo count($arr3);//数组中元素的个数
$arr4=[10,20,30,40];
// $a1=array_unshift($arr4,5);//数组头部添加元素
// $a2=array_shift($arr4);//删除数组中第一个元素
// $a3=array_push($arr4,50);//数组尾部添加元素
// $a4=array_pop($arr4);//删除数组中最后一个元素
// var_dump($arr4);
$arr5=['a','b','c','d'];
array_splice($arr5,0,2);//从索引0的位置开始删除,删除2个元素
print_r($arr5);//['c','d']
$one=['a','b','c','d'];
$two=['e','f','y'];
$con=array_merge($one,$two);//合并数组
print_r($con);
$res = range('a', 'z');// 生成一个字符a到字符z的数组
echo '<pre>';
print_r($res);
echo '</pre>';
JSON
函数 | 说明 |
---|---|
json_encode(数组) | 转为字符串格式 |
json_decode(字符串,参数) | true:返回数组;false:返回对象 |
引入文件
在页面头部或其他部相同的情况下,引入文件,只编写不同功能部分。
include:引入文件不存在时会报致命错误,后面代码不执行
require:引入文件不存在时会报警告错误,后面代码继续执行
include_once:若重复引用只执行一次
require_once:若重复引用只执行一次
语法:
include '文件地址';