PHP简介
PHP是一种超文本预处理语言,运行在服务器端能和html进行嵌套用于制作动态网页的语言
特点
- 运行在服务器端的脚本语言
- 能支持绝大部分的操作系统
- 能支持大部分的服务器apache IIS
- 能支持大部分的数据库mysql sql server Acces
- 能操作数据库
- 能操作文件
- 能操作图片
与html嵌套
在<?php ?>分隔符中的内容会被
mamp
集成开发环境
静态网页
没有链接数据库的网页
动态网页
链接数据库,数据库中获取数据
数据库
mongoDB 分布式文件存储的数据库
数据的存储管理、定义
关系型数据库
mysql 关系型数据库
在关系模型的基础上建立的数据库
非关系型数据库
mongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
web服务器
提供web功能的设备
接收请求、处理请求
网络分发、调制解调的功能
服务器返回数据在浏览器中呈现
PHP
运行在服务器端的脚本语言
服务器
处理用户请求
静态资源
.html .css .js .jpg .gif .png
请求静态资源直接原样返回,以字符串的形式返回
动态资源
.php .java
请求动态资源时,先解析PHP的代码,然后把PHP输出的结果,交给服务器返回,当浏览器接收到返回的内容,开始绘制,碰到href,src,url的时候,会再次向服务器发送请求,最终呈现整个页面
处理过程
当在地址栏键入地址的时候,浏览器结合我们的软硬件将http请求发送到网络中,服务器接收到我们的请求,开始处理我们的请求,请求的资源分别按照静态资源和动态资源的处理方式进行处理。
基础
变量
echo
输出到页面中为字符串
var_dump()
输出类型和值
var_dump(123); //返回 int 123;
常量
define('键','值');
值可以用表达式来表示
function name(){
return 800;
}
defined("PI",name()); //返回 int 800;
const
值不可以用表达式
const PI=20*30;
var_dump(PI);
常量的名字需要大写,不加$符号,一旦定义后不能更改
常量的值不能在改变或者是被删除
常量可以在任何位置区访问
常量的值不能延迟求值,只能是标量
可变变量
将一个变量的值作为另一个变量的名字
$nub='name';
$$nub='123';
var_dump($nub); //返回“name”
var_dump($name); //返回“123”
var_dump($$nub); //返回“123”
变量引用
&
引用地址
$nub=200;
$nub2=&$nub;
$nub=300;
echo $nub2; //返回300;
判断
defined();
判断常量是否被定义
isset();
判断变量是否被定义
删除变量
unset();
数据类型9种
标量4种
int
整型integer
float/double
浮点型
string
字符串
. 点
表示连接,可以连接两个标量
标量连接
$nub1=100;
$nub2=200;
var_dump($nub1.$nub2); // .表示连接
“ ”双引号
可以解析变量
$nub=200;
$str1="这是一个数字$nub";
$str2="这是一个数字{$nub}asj293";
boolean
布尔类型
复合类型3种
对象
class person{
}
$obj=new person();
数组
索引数组
print_r();输出数组的形式
echo "<pre>";
$arr1=array('a',12,'b');
$arr2=array(
0=>'a',
2=>34
);
print_r($arr1);
关联数组
$arr3=array(
'name'=>'lisi',
'age'=>13
);
二维数组
$arr4=array(
'name'=>array('a','2'),
'age'=>array(1,2)
);
数组遍历
for(只能遍历索引数组)
for($i=0;$i<count($arr);$++){
echo $arr[$i];
};
foreach(适用于索引数组和关联数组)
foreach($arr1 as $item=>$value){
echo $item.'=>'.$value;
};
callable可调用
特殊类型2种
null
resource
判断
is_resource();
判断是否是一个资源
is_int(); is_integer();
判断是否是整数
is_flaot(); is_double();
判断是否是小数
is_boolean();
is_string();
is_null();
is_array();
is_object();
获取
gettype();
获取数据类型
强制转换
函数方式强转
intval();
转化为整数
strval();
强制转化为字符串
注意:将true转化为1,将false转化为“ ”;
floatval();
强制转化为小数
doubleval();
boolval();
直接强转
(int)
(flaot)
(double)
(bool)
(boolean)
$nub='123';
$result=(int) $nub;
false的情况
var_dump(boolval($nub));
//0 "" false null "0" 空数组;
函数
字符串函数
strlen();
输出字符串的长度
trim();
ltrim();
rtrim();
strtolower();
strtoupper();
strrev();
md5();
将字符串翻译成16进制的字符串
用于加密,而且加密后不可逆
explode();
与js里的split();方法一样,将字符串转换成数组
substr();
从指定位置截取到指定长度(按字节截取)
mb_substr();
从指定位置截取到指定长度(按字符截取)
strstr();
从匹配到的第一个字符开始截取的
最后的参数决定了向前还是向后截取
strpos();
从开始查找指定字符首次出现的位置
最后一个参数offset表示是从哪个index位置开始查起,如果找不到返回false
strrpos();
从最后开始查找指定字符首次出现的位置
str_replace();
替换(区分大小写)
参数search,
str_ireplace();
替换(不区分大小写)
数组函数
in_array();
判断某个值在不在数组里,可以启用全等
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
var_dump(in_array(11,$arr)); //bool(true)
var_dump(in_array('18',$brr)); //bool(true)
var_dump(in_array(18,$brr)); //bool(true)
var_dump(in_array('name',$brr)); //bool(false)
array_search();
在数组中搜索给定的值,如果成功则返回响应的键名,若找不到返回false
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
var_dump(array_search(18,$brr,true)); //string(3) "age"
array_key_exists();
判断某个值是不是数组中的键,如果有返回true,没有就返回false;
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
//array_key_exists();
var_dump(array_key_exists('lisi',$brr)); //bool(false)
var_dump(array_key_exists('name',$brr));
//bool(false)
array_filter();
用回调函数过滤数组中的元素
$arr=array(11,22,33);
$brr=array(
'name'=>'lisi',
'age'=>18
);
echo "<pre>";
var_dump(array_filter($brr,function($value){
return $value;
}));
//array(2) {
["name"]=>
string(4) "lisi"
["age"]=>
int(18)
}
array_walk();
类似foreach,将每个值都执行一个函数
array_map();
将用户自定义函数作用到给定数组的每个值上,返回新的值
array_push();
将数组的后面推入一个或多个新元素,会影响到原数组(入栈)
array_pop();
删除数组中的最后一个元素(出栈)
array_shift();
删除数组中的指定元素去掉并用其他值取代
array_unshift();
在数组前面插入一个或者多个元素
array_keys();
返回的是由键组成的数组,如果有第二个参数,那么返回鱼第二个参数匹配的键
array_values();
返回数组中所有的值
array_sum();
返回数组中所有值的和
array_merge();
将一或者多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面
$array1 = array(
"color" => "red",
2,
4
);
$array2 = array(
"a",
"b",
"color" => "green",
"shape" => "trapezoid",
4
);
$result = array_merge($array1, $array2);
print_r($result);
//输出以下结果
// Array
// (
// [color] => green
// [0] => 2
// [1] => 4
// [2] => a
// [3] => b
// [shape] => trapezoid
// [4] => 4
// )
array_merge_recursive();
合并多多数组,如果有相同的键值,那么后者就会覆盖前者
$ar1=array(
'color'=>array(
'favorite'=>'red'
),
5
);
$ar2=array(
10,
'color'=>array(
'favorite'=>'green',
'blue'
)
);
echo "<pre>";
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
// 以上结果会输出
// Array
// (
// [color] => Array
// (
// [favorite] => Array
// (
// [0] => red
// [1] => green
// )
//
// [0] => blue
// )
//
// [0] => 5
// [1] => 10
// )
array_unique();
去重复
array_rand();
随机取数组里面的值,如果取多个那么返回的是键组成的数组
sort();
按照值进行升序排序,重新排键
rsort();
按照值进行降序排序,重新排键
asort();
按照升序进行排序,保持原来的键
arsort();
按照升序进行排序,保持原来的键
ksort();
按照键进行升序排序
krsort();
按照键进行降序排序
数学函数
abs();
ceil();
floor();
max();
min();
round();
mt_round();
生成随机整数
pow();
PHP函数
如果定义了形式参数,必须传递一个实际参数
判断方法
function_exists();
判断一个函数是否存在
可变函数
function fun(){
echo 123;
}
$name='fun';
$name();
作用域
全局变量
全局变量只能在全局里面使用,不能在局部用
从外面传值
$nub=200;
function fun(&$aa){
$aa=300;
echo $aa;
}
fun($nub);
echo $nub;
声明外全局变量
$nub=200;
function fun(){
global $nub
echo $nub;
}
fun();
超全局变量
$GLOBALS
$nub=200;
function fun(){
$GLOBALS['nub']=300;
echo $GLOBALS['nub'];
}
fun();
echo $nub;
$_GET
$_POST
$_REQUSET
$_FILES
$_SERVER
$_SESSION 服务器端的session
$_COOKIE
局部变量
静态变量
static
在函数第一次运行的时候,会把静态变量保存下来,后面在用的时候会用到静态变量
function fun(){
static $nub=200;
$nub+=1;
echo $nub;
}
fun(); //200;
fun(); //201;
回调函数
传参的方式回调
函数的名字不能直接作为参数用,需要加引号
function aa(){
echo 123;
}
function fun($callback){
$callback();
}
fun('aa'); //123;
在实际参数里面直接写回调函数
function fun($callback){
$callback();
}
fun(function(){
echo 123;
}); //123;
require
在PHP页面引入其他文件,实现代码复用
如果找不到要引入的文件,会erro报错,程序停止
include
在PHP页面引入其他文件,实现代码复用
如果找不到要引入的文件,会warning报警,程序会继续往下运行
时间
设置时间
date_default_timezone_set(timezone indentifier:"Asia/Shanghai");
获取时间的区域
date_default_timezone_set();
time();
距离计算机元年的秒数
microtime();
毫秒数
date()
var_dump(date(Y-m-d H-));
A:"AM"或者是"PM";
d:几日,两位数字,若不足则补零,从“01”至“31”;
D:星期几,3个英文字母,如:“Fri”;
F:月份,英文全名,如:“January”;
h:12小时制的小事,从“01”至“12”;
H:24小时制的小事,从“00”至“23”;
g:12小时制的小事,不补零,从“1”至“12”;
G:24小时制的小事,不补零,从“0”至“23”;
j:几日,不足不补零,从“1”至“31”
l:星期几,英文全名,如“Friday”
m:月份,两位数字,从“01”至“12”;
n:月份,两位数字,从“01”至“12”;
M:月份,3个英文字母,如:“Jan”;
s:秒,从“00”至于“59”;
S:
getdate();
mktime();
服务器存储
cookie
设置cookie
setcookie();
setcookie('name','123',time()+40);
删除cookie
setcookie('name','123',time()-1);
session
开启session
session_start();
设置session
$_SESSION['name']='123';
删除session
unset($_SESSION['name']);
验证码
创建图片
$img=imagecreatetruecolor(width:120,height:40);
$color1=imagecolorallocate($img,red:,green:,blue:);
$color2=imagecolorallocate($img,red:,green:,blue:);
for($i=0;$i<20;i++){
$color=imagecolorallocate($img,red:md_rand(),green:,blue:);
imagesetpixel(); //画圆点;
}
imageline($img,);
imagefill($img,x:0,y:0,$color1);
header("content-type:image/png");
imagepng($img);
//imagejpeg();
imagedestroy($img); //释放资源
//$color=imagecolorallocatealpha();
在html中请求图片
![](checkcode.php)
魔术常量
var_dump(__DIR__); //
var_dump(__FILE__);
var_dump(basename(__FILE__)); //从一个路径中,返回文件名字
var_dump(dirname(__FILE__)); //从一个路径中返回路径
var_dump(file_exists());
is_dir();
is_file();
rmdir(); 删除空文件夹
unlink(); 删除路径