PHP基础知识

你好! 这是我自己编辑的一些知识点。如果你想学习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方式提交的数据
$_POSTPOST提交的数据都会保存在此
$_REQUESTGET和POST提交的都会保存
$_GLOBALSPHP中所有的全局变量
$_SERVER服务器信息
$_SESSIONsession会话数据
$_COOKIEcookie会话数据
$_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 (表达式) {
case1: 语句;break;
case2: 语句;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代表数组中元素的索引号, keyvalue代表数组中元素的值。

$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扩展。image.png

在浏览器中访问PHP文件,Ctrl+f在搜索框中输入mysqli,查看是否支持

image.png

对数据库增删改

<?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

库函数

库函数->内置函数:数学函数、字符串函数、数组函数、目录函数、文件系统函数、时间函数、错误处理函数。

数字函数

函数名语法说明
randrand(min,max)返回一个随机整数
absabs(mixe)返回数字的绝对值
minmin(array)返回最小值
maxmax(array)返回最大值
roundround(float)四舍五入
floorfloor(float)舍去小数部分取整
ceilceil(float)小数部分非零返回整数部分就加1
sqrtsqrt(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 '文件地址';

文件编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薯片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值