php基础
1.变量:
声明变量:
$name='小明';
输出变量也要加$,html模版输出变量{$name}
变量名区分大小写,函数名不区分大小写。
删除变量:
unset($name)
常量:
使用 define() 函数,一旦被定义就不能修改 define("HOST","localhost")
检测变量:
isset:变量是否存在(没声明,值为null就算不存在,存在输出1,不存在为空)
empty:变量是否为空(0,‘’,‘0’,false,array(),null,没声明,空输出1,不空输出空)
2.输出:
echo - 可以输出一个或多个字符串 echo $name; 一般用来输出变量
print - 只允许输出一个字符串,返回值总为 1; print $name
var_dump($name);一般用来输出数组,并打印数据类型,及长度
print_r($name) ;一般用来输出数组,不打印类型
3.数据类型:
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
字符串:
字符串连接符用 .
布尔型:
echo输出ture为1,输出false为空
数组:
$arr=array('a','b','c') 索引数组 $arr[1] 读取 $arr[]='d' 末尾添加
$arr=array('name'=>'a','age'=>'20') 关联数组
多维数组: $arr(1,2,3,array(4,5))
$arr[2][0] //0
对象:
对象有两部分:属性,方法(函数)
资源类型:
资源类型:连接数据库资源,文件打开资源
4.PHP 流程及循环:
if(){ }else { }
$a=2;
switch($a){
case 1:
break;(结束本层循环)
case 2:
continue;(结束本次循环)
}
while(){ } - 只要指定的条件成立,则循环执行代码块
do{ }while() - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
for(){ } - 循环执行代码块指定的次数
foreach - 根据数组中每个元素来循环代码块
5、中止脚本:
exit;
exit();(两个相同直接中止)
die;(从这开始中止)
die();
6、函数:
自定义函数:function fn(){ }
变量函数:变量等于一个函数
7、变量作用域(和js不同)
全局变量:函数外的变量
局部变量:函数内的变量(函数内部不能改变外部变量,想要改变要么return,要么加global 变成全局变量)
8、引用参数:
函数内部和外部指向同一个变量地址,改变函数内部变量的值,函数外部也发生变化
9、回调函数:
函数的参数是一个函数,这个参数函数就是回调函数
10、静态变量:
用static修饰的变量(多次调用同一个函数,静态变量一直跟踪)
11、文件包含:
include('')(出错没找到文件下文接着执行)
require('')(出错没找到文件脚本直接中止下文不执行)
12、递归函数:
函数内部调用函数自己
13.date:
$t=date("H"); 时间‘H’24小时, ‘h’12小时, ‘y’是年 ‘w’日期
14.遍历数值数组:
(1)$arrlength=count($arr);//获取数组的长度
for($i=0;$x<$arrlength;$i++)
{
echo $arr[$i];
echo "<br>";
}
(2)foreach($arr as $key=>$val)
{
echo "<h1>{$key}:{$val}</h1>";
echo "<br>";
}
15.超级全局变量:
$GLOBALS 获取所有全局变量
$_SERVER 查看服务器信息
$_REQUEST get和post都能获取到(慢一般不用)
$_POST 表单数据一般用post提交
$_GET 获取get提交过来的数据,一般用在a标签上,地址栏有参数
$_FILES 文件上传
$_COOKIE 同一个变量在多个页面都能获取到
$_SESSION 同一个变量在多个页面都能获取到
16.数组函数:提供了很多官方写的非常有用的代码段,提高编写速度。
1.数组的键值操作函数
array_values();
$keys=array_keys($arr);
print_r($keys);
in_array("val",$arr);//查某个值是否在数组里
array_key_exists();//检查某个键是否在数组里
$arr2=array_flip($arr);//颠倒数组的键值
array_reverse($arr);//颠倒数组顺序
count($arr);//数组长度
array_count_values($arr)//统计数组中的相同值的个数
array_unique($arr)//数组去重
2.使用回调函数处理数组的函数:
$arr=array("user1"=>50,"user2"=>60,"user3"=>70)
function jieguo($val){
if($val>=60){
return true;
}
}
array_filter($arr,"jieguo");//过滤
$arr=array(1,2,3);
function add($val){
return $val+1;
}
$arr2=array_map("add",$arr);//数组的值每个都加一(array(2,3,4))
注:函数参数带&符函数内部改变改变这个参数,函数外部也改变
17.数组排序函数:
sort($arr) - 对数组进行升序排列,不保留key
rsort() - 对数组进行降序排列,不保留key
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
natsort()-自然数排序(升序)
natcasesort-忽略大小写的自然数排序(升序)
$arr=array("aaa","bbbbb","cc","dddd");
foreach($arr as $val){
$lens[]=strlen($val);//字符串长度
}
array_multisort($lens,SORT_ASC,$arr);//多数组排序
sort($lens);
$arr2=array_combine($lens,$arr);//合并两个数组
print_r($arr2);
18.拆分,合并,截取与结合函数
$str="a-b-c-f"
$arr=explode("-",$str);//以"-"拆分字符串变成数组
$str=implode("-",$arr)//以"-"将数组拼成成字符串
join();//同implode()
array_slice($arr,0,3)//截取数组从0开始截,截3个,不改变原数组
array_splice($arr,0,3)//截取数组从0开始截,截3个,改变原数组,第四个参数是替换
array_merge($arr1,$arr2)//合并两个数组
array_combine($arr1,$arr2)//第一个数组变成key第二个数组变成val,合并成一个新数组
array_intersect($arr1,$arr2)//两个数组相同的(交集)
array_diff($arr1,$arr2)//第一个数组和第二个数组比有哪些不同的(差集)
array_pop($arr)//删除数组最后一个值
array_push($arr,"dd")//数组最后添加一个值
array_shift($arr)//删除数组第一个值
array_unshift($arr,"dd")//数组开头添加
array_rand($arr)//从数组中随机选出key
shuffle($arr)//随即打乱数组
range(1,5)//组成1-5的数组
array_sum($arr)//计算数组和
19、字符串函数
pathinfi($str)//将地址拆分
$arr=parse_url($str)//将url地址拆分成数组
parse_str($arr['query'],$arr2)//拆分参数
strlen();字符串长度
strrev();颠倒字符串
md5();加密
number_format();以特殊格式分割字符串
ltrim();去掉字符串首空格
rtrim();去掉字符串尾空格
trim();去掉字符串首尾空格
str_pad();填充字符
str_repeat();重复多少次字符
strtoupper();转大写
strtolower();转小写
ucfirst();首字母大写
ucwords();每个字母首字母都大写
str_shuffle();//随即输出字符串
nl2br();将\n转换成<br>标签
htmlspecialchars();把特殊字符转成实体(<,>)
strip_tags();去掉html标签
addslashes();转义"\
20、正则表达式
原子:
. 任意一个字符
\w 任意字母数字下划线
[]它里面的任意一个字符
()它里面所匹配的就是一个单元
\d 任意一个数字
\D 任意一个非数字
\W 除了字母数字下划线任意一个字符
\s 空白字符
\S 除了空白字符任意一个字符
[^abc]除了abc任意一个字符
元子符:
* 0个 一个 多个
+ 一个 多个
? 0个 一个
| 或
^ 以。。开头
$ 以。。结尾
{2}两个原子
{2,}两个以上前面的字符
{2,5}2-5个前面的字符
\b 词边缘
\B 非边缘词
模式修正符:
i 忽略大小写
m 视为多行(有\n换行的)
s 视为一行
U 贪婪模式
e 替换用的
$reg="/\w*/";
preg_match($reg,$str,$mats);查找
print_r($mats)
preg_match_all();
preg_grep();
preg_replace($reg,$rep,$str);替换
preg_split();分割
21、数学函数
max();找出最大值
min();找出最小值
mt-rand(1,5);随机从1-5中取一个
ceil();往上取值整数
floor();往下取值整数
round();四舍五入
pi();圆周率
22、日期函数
time()//时间戳
data()//$t=date("Y-m-d H:i:s",timmer()+8*3600);
时间‘H’24小时,‘h’12小时,
‘Y’是年2017‘y’是年17
‘w’周几
‘m’是月 n 月没前导0
‘d’是天 j天没前导0
‘t’一个月多少天
‘L’是否为闰年
‘s’秒;
‘i’分钟
strtotime("2017/12/6");//日期转换成时间戳
microtime();微秒
23、文件函数
$filename="a.txt"
is_dir();是否是目录s
is_file();是否是文件
file_exists();是否存在文件或目录
filesize();文件或目录大小
unlink();删除文件
copy();复制文件
rename();重命名
fclose();关闭文件
fopen($filename,"w");打开文件(“w”没有就新建 )
模式:
r 只读
w 只写
r+ 读写
w+ 读写(先清除所有再写)
fread();读
file();读取文件
file_get_contents();//读取文件
readfile()读取文件
fwrite();写入文件
file_put_contents($filename,$str,FILE_APPEND);//写入文件
24、上传文件
$tmpfile=$_FILES['file']['tmp_name'];临时文件夹路径
$dstfile="uploads/imgs/".$_FILES['file']['name'];移动到的文件路径和名称
move_uploaded_file($tmpfile,$dstfile);移动被上传的文件
25、文件下载
header("content-type:image/png");
header("content-disposition:attachment;filename=a.txt")
header("content-length:30kb");
readfile("a.txt");