数组函数:
1.排序类:【1.无返回值,传值引用,就直接对原数组进行了修改】
按V:sort,rsort,asort,arsort,
按K:ksort,krsort
sort() 按升序对给定数组的值排序,不保留键名
rsort() 对数组逆向排序,不保留键名
asort() 对数组排序,保持索引关系
arsort() 对数组逆向排序,保持索引关系
ksort() 按键名对数组排序
krsort() 将数组按照键逆向排序
natsort() 用自然顺序算法对数组中的元素排序
natcasesort() 自然排序,不区分大小写
2.键值操作类:【都有返回值,没有在原来参数上修改】
array_values($arr); //获取$arr中的值重排,去掉下标,返回值->新索引数组
array_keys($arr[,"str",true]) //获取$arr中所有字符是"str"的下标,形成索引数组,true表示区分大小写【返回新索引数组】
array_search("is",$arr[,true]) //返回值"is"在$arr中的key,找不到返回fales,true表示严格按照类型(8,"8")【返回第一个匹配值】
in_array("str",$arr); //判断"str"在$arr中是否存在,【返回BOOL】
is_array($arr); //判断是否是数组【返回BOOL】
array_key_exists($key,$arr); //查询$arr中是否有$key,【返回BOOL】,此方法比in_array效率更高
array_flip($arr); // 交换键值,如有重复,后来居上,【返回新数组】
array_reverse($arr,[true|false]); //数组顺序反转,param2是否保留原来键值【返回新关联/索引数组】
array_column(array(),'name'[,name_two]) — 返回数组中指定的name列[可选参数,如果有返回name=>name_two的形式]【返回一维数组】
3.元素个数和唯一性
array_unique($arr); //去掉$arr中的重复值,重复的保留第一个值,【返回数组,键值保留】
array_count_values($arr) //统计数组值出现的次数,【返回数组,KEY为原来数组的值,VALUE为统计的次数】
count($arr[,1])/sizeof(); //统计$arr的元素个数,参数"1"表示统计多维数组开启,默认0为关闭【返回统计个数】
4.回调函数
array_filter($arr,"function"); //把$arr放到函数function中处理,【返回判断为TRUE的数据组成新数组,键值保留】
array_walk($arr,"function"[,"data"]); //把$arr放function(&$v,$k,$data)中处理【返回值为bool】
array_map("function",$arr,$arr2,$arr3,....); //把所有数组返回到回调函数统一处理,【返回数组】
array_reduce($arr,myfunction[,initial]); //把一维数组$arr中的值依次传到自定义函数myfunction($v1,$v2)的v2上,v1为累加值类似于( .=),[如果有initial,先把其当v1传进去]【返回字符串】
5.拆分,合并,分解,接合数组
array_slice($arr,1[,2]); //在$arr中,从第二个开始取[,返回俩个值]【返回新数组(对原数组无影响),键值保留】
array_splice($arr,1[,2,"aaa","bb"]) ; //删除或替换,从$arr第二个开始取,删除或替换2个值【返回值为新数组,拆掉原数组】
array_combine($arr1,$arr2); //数组$arr1为KEY,$arr2为VALUES结合形成新索引数组【返回索引数组】
array_merge($arr1,$arr2,$arr3...); //数组进行合并,保留键值,有重复,后来者居上 【返回新数组】 array_merge 发现有 key 值相同的, 取后者; $arr1+$arr2 发现有key值相同的,取前者,第二个重复的值丢弃
array_intersect($arr1,$arr2); //返回两个数组的交集,键值不变
array_diff($arr1,$arr2); //返回两数组的差集,返回的值为第一个数组的值,键值不变
array_chunk($arr,2); //分割数组,把$arr按照【2个为一组】均等分割【返回一个二维数组】
6.数组的数据结构【无返回值,传值引用,就直接对原数组进
行了修改】
array_shift($arr) //从开头,删除数组第一个元素
array_unshift($arr,"one","two") //从开头,添加元素
array_pop($arr) //从结尾,删除数组最后一个元素
array_push($arr,"aaa"); //从结尾,添加元素
current($arr) //返回数组中的当前单元 比如是关联数组是不知道下标,
可以输出当前数组的办法解决(返回的是数组中第一个健值)
key($arr) //返回当前指针指向元素的键值
next($arr) //当前指针下移
pre($arr) //当前指针上移
end($arr) //指针指到最后
reset($arr) //指针回归到开头
unset($arr)//销毁此数组
7.其他
array_rand($arr,2); //随机返回两个$arr数组当中的key【返回值为值或者数组】
shuffle($arr) //随机的重组$arr,顺序变乱【返回新数组,保留键值】
array_sum($arr); //返回$arr的value的和【返回一个值】
range(0,10,2,) //快速创建0,10的数组,间隔为2,所以有5个值【返回新索引数组】
http_build_query($arr) //把关联数组转换成一个经过urlencode加密的
URL eg:array["a"=>2];=>URL:a=2&
字符串函数
1.返回bool
isset($a) //当$a=NULL 或不存在,返回false,反之为true
empty($a) //当$a=NULL/''/array()/0/'0'/不存在 时 返回true,反之为false
2. 返回值为自字符
substr(字符串,开始地方,[返回字符串的长度]); //截取字符串的一部分,第一
个字符位置为0
substr_replace($str,"aaa",start[,length]); //在$str上操作,从第start个
开始,把【后边】的字符[全/或length个]替换
sub_count($str,"is"[,5,10]); //[ 从第五个字符开始,搜索长度为10,]搜
索is在$str中出现的次数,【返回次数】
strstr($email,"@"[,true]) //从头开始搜索,无true返回@后边字符,有true
返回@前边的字符[strrchr对比]
strrchr($email,"@") //从结尾开始搜索,返回@后的所有字符
str_replace //(被替换词,替换词,被搜索字符串,[统计替换次数
$num]) 前两个参数也可为数组,两个数组元素个数相同
str_repeat($str,num); //重复$str字符串 num次,
3.返回值为数字类的
strpos($str,"@"); //返回@【第一次出现的位置】
strrpos($str,"@"); //返回@【最后一次出现的位置】
str_word_count($str[,0/1/2]); //返回$str中单词的数量[0指返回次数,默认
值/1指以数组形式返回单词值/2指返回关联数组,k为单词首字母下标,v单词
值]
strcmp($str1,$str2); //按ASCII码比较 str1>str2 则返回1 相等返回0 <
返回-1 strcasecmp不区分大小写的比较
strnatcmp($str1,$str2); //按自然数的排序比较,上边的比较10<2;本函
数比较10>2,按自然数大小来的 strcasecmp($str1,$str2);strnatcasecmp//
以上4个函数,$str1,$str2比较,【返回值:相等0,小于-1,大于1】
number_format(10000[,2]); //==》10,000.00 把第一个参数格式
化,保留2位小数
strlen($string);成功则返回字符串 $string 的长度
mb_strlen($string,'utf8');//获取字符串$string长度,多字节的字符被计为
1。
4.文本处理类
strtoupper($str) //字母全转为大写【返回全大写字符串】
strtolower() //字母全转为小写【返回全小写字符串】
strtotime('2015-10-10 10:10:10'); //指定时间转换为时间戳【返回时间
戳】
str_pad($str,length,[---,STR_PAD_BOTH]); //在$str的两边填补“---“,
注意,length若小于$str长度,不填补
trim($str[,"a",STR_PAD_BOTH]) //去除两边/左/右的空白或"a",默认是空
白,或自定义字符
floatval("123.45aa") //=》获取变量的浮点值【123.45】
ucfirst() //整个$str首字母大写
ucword() //$str每个单词首字母大写
5. HTML类处理
htmlspecialchars($str) //函数把【预定义字符】转换为【 HTML 实
体】,&转换成&
htmlspecialchars_decode($str); //把【HTML实体】转换成【预定义字
符】,&转换成&
htmlentities($str); //函数把【预定义字符】转换为【 HTML 实体】,&
转换成&,有乱码问题,注意第二第三个参数,若编码不正确,会在实
体化时把信息丢失
html_entity_decode($str) //把【HTML实体】转换成【预定义字符】,
&转换成&, > 转成 <
addslashes($html); //添加转义字符“/”
stripslashes($html); //删除转义字符“/”
strip_tags($html); //去除HTML标签
nl2br($str) //在$str中的换行/n前插入<br>,因为\n在源码可以换行,但是
在浏览器窗口不行,有这个就可以
iconv( from_charset ; to_charset,$str); //转化字符格式
$file_name = iconv("gb2312","utf-8",$file_name);
正则函数
[原则,能用字符串函数解决不用正则,速度问题]
1.字符串的匹配查找
preg_match($pattern,$subject,$arr); //按正则$pattern处理$subject,第
一次匹配结果返回到数组中【函数的返回值为匹配次数】
preg_match_all($pattern,$subject,$arr) //按正则$pattern处理$subject,
全部匹配结果返回到数组中【函数的返回值为匹配次数】
strstr($str,"@"[,true]);
strpos,strrpos,substr($str,position) //联合使用
2.字符串的替换
preg_replace($pattenr,$replace,$str); //【强大的字符串处理函数】
在$str中,把$parrern匹配的值替换成$replcae【返回值为处理后的字符串】
str_replace($str,"aaa","bbb"); //把$str中的aaa换成bbb
3.字符串的分割和链接
preg_split($pattern,$str); 通过一个正则表达式分隔字符串【返回值为
数组】
举例:
1.$keywords = preg_split("/[\s,]+/", "hypertext language, programming")
结果Array([0] => hypertext,[1] => language[2] => programming)
2.explode(",",$str[,$limit_num]);//把$str按照","分割成一个数组[可选参
数为返回数组的元素个数]【返回一个分割后的数组】
3.impolde("+",$arr);//把$arr里的元素按照“+”链接成一个字符串
文件处理函数
1.基础函数
file_exists($file) //文件是否存在,【true/false】
filesize($file) //返回文件的大小【大小字节/出错false】
is_readale($file) //是否可读【返回bool】
is_writeable($file) //是否可写【返回bool】
is_executable($file) //是否可执行【返回bool】
filectime($file) //文件创建时间【时间戳】
filemtime($file) //文件修改时间【时间戳】
fileatime($file) //文件访问时间【时间戳】
stat($file) //返回文件的大部分信息【文件信息数组】
2. 目录的基本操作
basename($file) //返回文件名,index.php
dirname($file) //返回文件的路径,c://php/
pathinfo($file) //返回该文件路径的所有信息 ["dirname"目录
名] ["basename"文件名] ["extension"文件后缀]
目录复制,删除,统计大小使用的总结:
本质:依靠递归思想,对目录的的循环遍历,通过每一个文件的操作,得
出结果
函数:复制:copy($org,$to);mkdir()
删除:unlink($file);mrdir();
统计大小:filesize($file)
3.遍历目录
opendir($file) //打开一个目录,参数为目录名或目录路径【返回资源型
的目录句柄$dir_handle,无权限返false】
readdir($dir_handle); //读取目录,参数为目录句柄,while,返回当前指
向对象的名字,目录指针后移【返回filename,没有是返false】
closedir($dir_handle) //关闭打开的目录
rewinddir($dir_handle) //倒回目录句柄,将目录指针重置到目录开始
4. 建立和删除目录
mkdir("dir_name"); //建立一个空的目录
rmdir("dir_name"); //删除一个空的目录
unlink("file_name") //删除一个文件,当删除目录是,必须删除该目录下的文件
5.文件的基本操作
fopen($fileName,"模式字符r,w,x") //打开一个文件,【返回值为资源型
$handle】
fclose($handle) //关闭打开的文件【返回BOOL】
fwrite($handle,"$data") //把$data写入$handle文件,先清空后写入,
【成功返回$handle,失败返回false】
file_put_contents($filename,$data); //它是上边三个合起来的效果
file_get_contents($filename) //读取文件里的信息【返回字符串】
flock($handle,$operation) //用$operation锁定文件$handle
copy($file1,$file2); //赋值$file1,形成$file2【返回BOOL】
unlink($file); //删除$file文件【返回BOOL】
rename($file1,$file_new_name); //重命名【返回BOOL】
6.文件的上传
is_upload_file($_FILES['file']['tmp_name']) //检查是否合法
move_upload_file($_FILES['file']['tmp_name'],$url); //上传合法文件
到$url
注意:html:form: method="post" ;enctype="multipart/form-data"
文件下载
header('contentdisposition:attachment;filename='.basename
($filename));//表示附件方式下载
header('content-length:'.filesize($filename));
readfile($filename);
SQL函数
mysql_connect('localhost',"root","root"); //连接数据库
mysql_select_db('data',$conn); //选择数据库名
mysql_query('set names utf8'); //设置编码
mysql_affect_array(); //试返回值为关联/索引数组
mysql_affect_row(); //返回索引数组
mysql_affect_assoc(); //返回关联数组
mysql_num_rows(); //返回上一次select的查询语句条数
mysql_affected_rows(); //返回上一次insert,update,delete的数据条数
mysql_close();//关闭数据库
数学函数
ceil() //向上取整
floor() //向下取整
round(); //四舍五入
abs(); //取绝对值
rand(10,100) //随机取值
mt_rand(10,100) //随机取值,算法不同,速度更快
fmod() //返回除法浮点形余数
max(int/$arr) //取最大值
min(int/$arr) //取最小值
pow(1024,2) //返回1021的2次幂
时间函数
date_default_timezone_set()('PRC'); //设置时区为中国
date.timezone ="PRC"; //PHP.INI
time(); //默认获取当前时间,【返回时间戳格式】
micritime(); //获取当前时间【返回毫秒的时间戳】
mktime(H,i,s,m,d,Y) //指定时间转为时间戳,参数为空的时候作用与
time()相同【返回时间戳格式】
strtotime('2015-10-10 10:10:10'); //指定时间转换为时间戳【返回时间
戳】
date("Y-m-d H:i:s",time()) ; //转换时间戳为日期格式【返回目标格式的
字符串】
getdate() //获取当前时间,【返回一个数组,参数年,月,日等都有】
URL处理函数
urlencode($url) //对该URL进行编码;原因:防止乱码,解决空格的呢个字符不能传递问题,form也是
此编码格式传递
urldecode($url) //对该URL进行解码
parse_url($url) //返回该URL的所有信息,[scheme协议][host域名] [path路径][query参数] 【返回含信
息的数组】
pathinfo($url) //["dirname"目录名] ["basename"文件名] ["extension"文件后缀]【返回含信息的数
组,下标不同】
get_meta_tags($url) //获取该页面的所有META标签【返回关联数组】
JSON
json_encode($data); //对变量进行JSON编码
json_decode($data) //对JSON格式的字符串进行解码
json_last_error(); //返回最后一次反生的错误
其他函数
sleep(10) //脚本执行到这里后,延迟10秒继续执行
serialize() //返回字符串,此字符串包含了表示 value 的字节流,可以存
储于任何地方。
unserialize() //对单一的已序列化的变量进行操作,将其转换回 PHP 的
值。
当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函
数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,
当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。
类型转换
setType($a); //获取变量的类型
$b=(int)$a; //把$a转换为整形
is_int($b); //判断$b是否为整形,返回bool值
类型转换:
(int),(bool),(float),(string),(array),(object); intval(),floatval();strval()
判断类型:
is_bool/int/float/string/array/object/resource/null
is_numberic();'//判断是否为任何类型的数字或者数组字符串
is_callable();//判断是否为有效函数名称