PHP常用函数学习
一.基本概念
二.PHP常用函数
2.1 常用函数
2.2 数组函数:
【1.无返回值,传值引用,就直接对原数组进行了修改】
按V:sort,rsort,asort,arsort,
按K:ksort,krsort
natsort();//区分大小写的排序
natcasesort();//不区分大小写的排序,
当遇到字符完全一样,按照数字排 eg: FILE1,FILE2, 这两个字符相同,再按照数字1<2排,所以结果 FILE1,FILE2
usort($arr,"strnatcmp")//回调类的排序,把$arr数组里的每一个元素丢到strnatcmp()[非自然数排序]处理【返回新的排序数组】
2.键值操作类:【都有返回值,没有在原来参数上修改】
1.array_values($arr);//获取$arr中的值,去掉下标【返回值新索引数组】
2.array_keys($arr[,"str",true])//获取$arr中所有字符是"str"的下标,形成索引数组,true表示区分大小写【返回新索引数组】
3.array_search("is",$arr[,true]) //返回值"is"在$arr中的key,找不到返回fales,true表示严格按照类型(8,"8")【返回第一个匹配值】
4.in_array("str",$arr);//判断"str"在$arr中是否存在,【返回BOOL】
5.is_array($arr);//判断是否是数组【返回BOOL】
6.array_key_exists($key,$arr); //查询$arr中是否有$key,【返回BOOL】
7.array_flip($arr);// 交换键值,如有重复,后来居上,【返回新数组】
8.array_reverse($arr,[true|false]);//数组顺序反转,param2是否保留原来键值【返回新关联/索引数组】
9.array_column(array(),'name'[,name_two]) — 返回数组中指定的name列[可选参数,如果有返回name=>name_two的形式]【返回一维数组】
1.array_unique($arr);//去掉$arr中的重复值,重复的保留第一个值,【返回数组,键值保留】
2.array_count_values($arr)//统计数组值出现的次数,【返回数组,KEY为原来数组的值,VALUE为统计的次数】
3.count($arr[,1])/sizeof();//统计$arr的元素个数,参数"1"表示统计多维数组开启,默认0为关闭【返回统计个数】
1.array_filter($arr,"function");//把$arr放到函数function中处理,【返回判断为TRUE的数据组成新数组,键值保留】
2.array_walk($arr,"function"[,"data"]);//把$arr放到function($v,$k,$data)中处理【返回值为bool】
1.array_slice($arr,1[,2]);//在$arr中,从第二个开始[,返回俩个值]【返回新数组(对原数组无影响),键值保留】
2.array_splice($arr,1[,2,"aaa","bb"]);//,从$arr第二个开始取,删除或替换2个值【返回值为新数组,拆掉原数组】
3.array_combine($arr1,$arr2);//数组$arr1为KEY,$arr2为VALUES结合形成新索引数组【返回索引数组】
4.array_merge($arr1,$arr2,$arr3...);//数组进行合并,保留键值,有重复,后来者居上【返回新数组】
array_merge发现有key值相同的,取后者;
$arr1+$arr2 发现有key值相同的,取前者,第二个重复的值丢弃
5.array_intersect($arr1,$arr2)//返回两个数组的交集,键值不变
6.array_diff($arr1,$arr2)//返回两数组的差集,返回的值为第一个数组的值,键值不变
7.array_chunk($arr,2)//分割数组,把$arr按照【2个为一组】均等分割【返回一个二维数组】
1.array_shift($arr)//移出数组的第一个单元,返回值为移出的单元。$arr为引用传值,所以$arr内的元素减少1,key重新从0开始重排。
2.array_unshift($arr,"one","two")//将传入的单元插入到 array
数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
3.array_pop($arr)//弹出并返回 array
数组的最后一个单元,并将数组 array
的长度减一。如果 array
为空(或者不是数组)将返回 NULL
。 此外如果被调用不是一个数则会产生一个 。
4.array_push($arr,"aaa");//从结尾,添加元素,返回值为新添加元素的数组。
6.current($arr)//返回数组中的当前单元 比如是关联数组是不知道下标,可以输出当前数组的办法解决
7.key($arr)//返回当前指针指向元素的键值
8.next($arr)//当前指针下移
9.pre($arr)//当前指针上移
10.end($arr)//指针指到最后
11.reset($arr)//指针回归到
12.unset($arr)//销毁此数组
7.其他
1.array_rand($arr,2);//随机返回两个$arr数组当中的key【返回值为值或者数组】
2.shuffle($arr)//随机的重组$arr,顺序变乱【返回新数组,保留键值】
3.array_sum($arr);//返回$arr的value的和【返回一个值】
4.range(0,10,2,)//快速创建0,10的数组,间隔为2,所以有5个值【返回新索引数组】
5.http_build_query($arr)//把关联数组转换成一个经过urlencode加密的URL eg:array["a"=>2];=>URL:a=2&
三.字符串函数
1.返回bool
2.返回值为自字符
1.截取字符串的一部分,第一个字符位置为0
2.substr_replace($str,"aaa",start[,length]);在$str上操作,从第start个开始,把【后边】的字符[全/或length个]替换
strstr($email,"@"[,true]) //从头开始搜索,无true返回@后边字符,有true返回@前边的字符[strrchr对比]
str_replace(被替换词,替换词,被搜索字符串,[统计替换次数$num]) 前两个参数也可为数组,两个数组元素个数相同
7.str_repeat($str,num);//重复$str字符串 num次,
3.返回值为数字类的
3.str_word_count($str[,0/1/2]);
单词的数量[0指返回次数,默认值/1指以数组形式返回单词值/2指返回关联数组,k为单词首字母下标,v单词值]
4.strcmp($str1,$str2);//按ASCII码比较 str1>str2 则返回1 相等返回0 <返回-1 strcasecmp不区分大小写的比较
5.strnatcmp($str1,$str2);//按自然数的排序比较,上边的比较10<2;本函数比较10>2,按自然数大小来的
strcasecmp($str1,$str2);strnatcasecmp//以上4个函数,$str1,$str2比较,【返回值:相等0,小于-1,大于1】
6.number_format(10000[,2]); //==》10,000.00 把第一个参数格式化,保留2位小数
7. strlen($string);成功则返回字符串 $string 的长度
8. mb_strlen($string,'utf8');//获取字符串$string长度,多字节的字符被计为 1。
4.文本处理类
1.strtoupper($str)//字母全转为大写【返回全大写字符串】
2.strtolower()//字母全转为小写【返回全小写字符串】
strtotime('2015-10-10 10:10:10');//指定时间转换为时间戳【返回时间戳】
str_pad($str,length,[---,STR_PAD_BOTH]); //在$str的两边填补“---“,注意,length若小于$str长度,不填补
[,"a",STR_PAD_BOTH])//
7.ucfirst()//整个$str首字母大写
8.ucword()//$str每个单词首字母大写
5.HTML类处理
// 遍历文件夹$path,生成TABLEfunction menu_list( $root_path){ =0;//存储条数 $dir_handle= opendir( $root_path); echo "<table border=1 cellspacing=5 cellpadding=10 align='center'>"; echo "<caption>{ $root_path}文件夹</caption>"; echo "<tr>"; echo "<td>文件名</td><td>类型</td><td>大小</td><td>创建时间</td>"; echo "</tr>"; while($file_name= readdir($dir_handle)){ if($file_name =="." || $file_name=="..")continue; = $root_path."/".$file_name; =$num++%2==0?"#FFFFFF":"#CCCCCC"; = filetype($cur_path)=="dir"?"目录":"文件"; echo "<tr color={$bgcolor}>"; = iconv_change($file_name); echo "<td>{$file_name}</td>"; echo "<td>{$cate}</td>"; echo "<td>". filesize($cur_path)."</td>"; echo "<td>". date("Y-m-d H:i:s", filectime($cur_path))."</td>"; echo "</tr>"; echo "<tr><td colspan=4 align=center>文件总数为:{$num}个</td></tr>"; echo "</table>";
/** * 删除文件夹[也可以删除文件] * @param $root_path 该文件夹的路径 */ function del_dir($root_path){ // echo file_exists($root_path)."--"; if(!file_exists($root_path))exit('文件不存在'); if(is_file($root_path))unlink($root_path);exit;
=opendir($root_path);//打开此文件夹 while($cur_name=readdir($dir_handle)){//遍历文件夹 if($cur_name =="." || $cur_name=="..")continue;//删除前两个默认的 $cur_path=$root_path."/".$cur_name; if(is_file($cur_path)){ //是文件,执行删除文件 del_file($cur_path); else{ //是文件夹,删除文件夹,递归 del_dir($cur_path); closedir($dir_handle); rmdir($root_path); /*删除文件操作*/ function del_file($file_path){ return unlink($file_path); }
/** * 统计文件夹大小[也可以统计文件] * @param 文件夹的目录路径 * @return 返回该目录的大小 */function dirSize( $dir){ =0; if(! file_exists( $dir))exit("文件不存在"); if( is_file( $dir))return filesize( $dir);//如果是文件,返回文件大小 $handle= opendir( $dir); while($cur_name= readdir($handle)){ if($cur_name=="." || $cur_name=="..")continue; = $dir."/".$cur_name;//获取当前文件的路径 if( is_file( $dir)){ //如果是文件,累加文件大小到file_size $dir_size+= filesize($cur_path); if( is_dir( $dir)){ //如果是文件夹,累加文件夹大小到file_size $dir_size +=dirSize($cur_path); return $dir_size; /** * 转换单位大小 * @param,data 以B为单位的字节大小 * @param,unit 转换后的单位 * @return 转换后的数字及单位,字符串格式 */ function transform_unit( $data, $unit="MB"){ $unit= strtoupper( $unit); switch ( $unit) { case 'B': $data= $data/ pow(1024, 0); break; case 'KB': $data= $data/ pow(1024, 1); break; case 'MB': $data= $data/ pow(1024, 2); break; case 'GB': $data= $data/ pow(1024, 3); break; case 'TB': $data= $data/ pow(1024, 4); return round( $data,2). $unit; // echo transform_unit(dirSize($path),"KB");