php 常用方法整理

基本知识

1、引用
php语言中有引用的概念,相当于指针。如$a = &$b

  <?php
        $a = 1;
        $b = &$a;
        $b = "2$b";
        echo "$a,$b"
  ?>

2、运算符优先级
(new) > (++、–) > (*、/、%) > (+、-) > (&&)> (||) > (?:) > (==) > (and) > (xor) > (or)

WEB编程

1、_GET和_POST获取表单数据
2、处理多选框时,要在html中定义成数组的形式,如<input name="hobby[]" type="checkbox" value="sport">

内置函数

数组内置函数

   (1) for、foreach循环输出数组元素
    for:按整数顺序索引排列数组
    foreach($array as $value)
    foreach($array as $key=>$value)
   (2) print_r() 查看数组结构,如果在输出前输出<pre>,页面输出的结果会更整洁
   (3) count() 计算数组元素的个数
   (4) array_chunk($array,$size,$preserve) chunk:块,数组块,组块; 函数功能时对一个数组进行分割,$array,原数组;$size,分割的数组大小,大于0;$preserve,是否使用原索引。
   (5) array_merge($array...) 数组合并,只接受array类型的参数,合并失败,返回null;如果数组索引时数字索引,会从‘0’开始编号索引;如果时字符串索引,则会出现覆盖的情况。
   (6) current() 返回数组当前的元素
   (7) prev() 返回当前元素的前一个元素,该方法会移动数组内部的指针,如果不存在前一个返回false
   (8) next() 返回当前元素的后一个元素,该方法可以移动数组内部的指针,如果不存在则返回false
   (9) end() 返回最后一个元素,该方法会移动数组内部的指针
   (10) sort($array) 对数组进行排序
   (11) rsort($array)  对数组逆序排列
   (12) asort($array) 对数组元素进行排序,保持数组的原索引关系不变
   (13) ksort($array) 对数组元素按索引名排序,保持原数组索引关系保持不变
   (14) arsot()
   (15) krsort()
   (16) shuffle() 随机打乱数组,删除原来的索引
   (17) array_reverse($array,$preserve) 将原数组按反序排序,返回排序后的数组,$preserve 是否保留索引,默认为false.
   (18) reset() 重置数组,将数组内部指针移动到第一个元素,并返回第一个元素。,如果数组为空,返回false 
   (19) list(), 将数组元素赋值给变量,严格讲,和array一样,并不是函数,仅能用于数字索引的数组,且假定索引从0开始。
   (20) 栈操作,array_push(array,mixed value)将一个或多个元素压栈,返回数组中新的元素总数; array_pop(array),出栈,栈为空,返回null
   (21) 队列操作,array_shift(array) 删除第一个元素并返回; array_unshift(array,val1,val2,...),将参数按照顺序加入队列中
   (22) array_change_key_case(array,CASE_LOWER/CASE_UPPER) 将字符串索引的转换为大小写,对数字索引不起作用
   (23) 集合操作:交集,array_intersect(array,arr1...)求数组元素的交集,array_intersect_assoc()求数组键-值的交集;差集,array_diff(array,arr1...) 求数组的差集,array_diff_assoc(array,arr1...)求键-值的差集 intersect 交集;相交 diff 
   (24) array_flip() 交换数组的键-值对,如果同一个值出现多次,则最后的索引会转换成对应的值
   (25) array_fill(int start,int num,mixed val)
   (26) array_count_values(array)  统计数组中元素的个数,返回一个数组,键时原数组的值,值为出现的次数
   (27) array_key_exists(key,array)检查索引是否存在于数组中
   (28) array_keys(array,[,searchvalue][,strict]) 获取所有的索引;array_values(),返回所有的元素,而不管是否重复
   (29) array_map(callbackfunc,arr1,arr2,...),数组的个数与回调函数的参数相同
   (30) array_filter(array,callbackfunc); 过滤数组中的元素,当回调函数返回true时,元素放到结果集中,键名保持不变。
   (31) in_array(var,array) var是否在array中
   (32) key(array) 返回当前元素的key

字符串内置函数

   (1) 分割合并 explode(separator,str[,limit]) 使用字符串separator分割字符串str,limit用于限制返回数组中最多有几个元素;implode(bds,array),将数组合并成字符串,使用bds链接元素
   (2) 比较和替换 strcmp(str1,str2) ;str_replace(search,replace,str),将str中search全部替换成replace,变形str_replace(searchArr,replaceArr,str),参数也可以是数组;substr_replace(string,replacement,start[,length]) 将string的start后的length长度(默认到结尾)的字符串替换为replacement,start和length可以为负数,表示从尾部开始,length为负数时表示倒数但是不包括倒数第length个。
   (3) 输出,print 严格的讲,print是语言结构,而不是函数,与echo的不同是print返回值是1,而echo没有返回值;echo可以打印多个string,而print只能打印一个string。
   (4) 格式化输出 sprintf(format,mixed args) ,类似于C 语言的格式化输出,类似的函数printf ,在这里假如使用$进行补齐,需要使用"'$"这样的写法
   (5) 获取子串 substr(string,start,length) 从string的start位置开始截取length长度的子字符串;strstr(string,needle,flag) 查找string中needle第一次出现的位置,并返回之后的所有字符(包括本字符),若flag为true,则返回之前的所有字符(不包括本字符);strchr() 同strstr;strrchr(string,needle,flag) string中needle最后一次出现的位置,返回之后的所有字符;strpos(string,needle[,start]) needle在string中第一次出现的位置。
  (6) 删除首位两端的多余字符,trim(),ltrim(),rtrim(),默认删除两端的空白字符,也可以自己指定。如trim(string,reStr)
  (7) 获取字符串长度 strlen(string) ,mb_strlen(string,encode)
  (8) 大小写转换 strtolower strtoupper
  (9) 处理html标记的字符串 htmlentities(string) htmlspecialchars();html_entity_decode(string) 将html实体解析成字符串
  (10) 重复生成字符串 str_repeat(string,num);str_pad(string,length,pad,pad_type) pad_type的值是常量,STR_PAD_LEFT,STR_PAD_RIGHT,STR_PAD_BOTH。使用pad在string的pad_type端补齐成长度为length的字符串。
  (11) 散列值 md5() sha1()
  (12) str_split(string[,split_length]) 将string分割成长度为length的子字符串并返回一个数组;split(regex,string) 支持正则,根据regex分割字符串string

文件操作内置函数

  (1) opendir(path) 打开目录,返回一个资源类型的数值
  (2) closedir(path) 关闭目录
  (3) readdir(dir) 读取文件夹,获取文件夹下的文件名而不是文件路径
  (4) scandir(string dir) 返回文件夹中的文件名数组,失败返回false,参数dir不是目录返回false   
  (5) getcwd() 获取当前的工作目录
  (6) chdir() 改变当前的目录
  (7) fp=fopen(filename,mode) 打开文件,返回一个资源类型数据,失败返回false
  (8) fclose(fp) 关闭文件,参数是fopen的返回值
  (9) fgets(fp) 读取一行,参数需要是一个文件句柄
  (10) file(filename) 读取整个文件,返回一个数组,每一个元素为文件的一行
  (11) get_file_contents(filename) 将整个文件读到一个字符串中;fread(fp,length) 读取整个文件,可以安全读取二进制文件,如果单纯的想将一个文件的内容读取到字符串,应该使用性能更好的file_get_contens();                  
  (12) readfile() 读入整个文件,并写入输出缓冲区,返回读取的字节数
  (13) fwrite(fp,content),返回写入的字节数,
  (14) fputs(),与fwrite一样
  (15) file_put_contents(filename,data,mode),返回写入的字节数,data可以是一维数组,mode的取值FILE_USE_INCLUDE_PATH,FILE_APPEND,LOCK_EX
  (16) fileowner(filename) 返回文件拥有者ID 
  (17) filesize() 取得文件的大小
  (18) filetype() 取得文件类型,返回值file,dir,link,block,unknown
  (19) is_dir(filename) is_file(filename) isreadable() iswriteable()
  (20) basename(filename[,suffix]) 取得路径中的文件名部分,若suffix存在则返回的文件名不包括suffix,可以用于去除扩展名; dirname() 取得路径中的目录名部分
  (21) file_exists(filename) 判断文件是否存在
  (22) mkdir(pathname,mode) 创建成功返回true,失败返回false
  (23) rmdir(pathname) 目录必须空目录
  (24) unlink(filename) 删除文件
  (25) copy(source,desc) 将source复制到desc,成功返回true
  (26) rename(oldname,newname)
  (27) fgetss(handle) 可以使用fopen打开url,此时fgetss可以过滤掉html标签
  (28) include() require() 
  (29) filemtime() fileatime() filectime() 返回unix时间戳

时间日期内置函数

  (1) date(format[,timestamp])
  (2) mktime(hour,minute,second,month,day,year) 省略的参数将以本地日期和时间代替。
  (3) getdate([timestamp]) 

1
2
3
URL处理内置函数

  (1) urlencode(str) 返回值字符串中所有的非字母和数字字符变成一个百分号(%) 和一个两位的十六进制数,空格被转换成+,-、_和.不做任何转换
  (2) urldecode(str) 

数学运算

  (1) abs(num)
  (2) ceil(num)
  (3) floor(num) 
  (4) sqrt(num)
  (5) round(num,precision) 四舍五入成指定precision位数
  (6) 进制之间的转换 bin 二进制,dec 十进制, oct 八进制,hex 十六进制,十进制转二进制 decbin(num) ,十进制转八进制 decoct(num) ,其余类似,不存在二进制、八进制、十六进制之间的转换,若要实现这些转换,可以使用base_convert(num,from,to) 如 base_convert("A4",16,2);定义十六进制时不需要加0x34  
  (7) rand() mt_rand(min,max) 随机数,其中mt_rand()可以生成指定范围内的随机数,默认时0~RAND_MAX

数据库操作

  (1) 连接数据库 conn = mysql_connect(host,username,password)
  (2) 关闭链接 mysql_close(conn);
  (3) 执行语句 mysql_query(sql) 仅对show,select,describe等语句返回一个资源标示,对于其他SQL语句,mysql_query() 在执行成功时返回TRUE,出错时返回FALSE
  (4) 处理查询结果集 
        mysql_affected_rows() 取得前一次mysql操作所影响的记录行数,失败返回-1
        mysql_fetch_row($result) result是执行mysql_query()之后返回的资源标识,该函数从查询结果集中返回一行数据。该函数返回值时一个数组,其中每一个元素对应一行结果记录的字段值。依次调用该函数可以返回结果集中的下一行,如果没有更多行,函数返回false。
        mysql_fetch_array(result,type) 返回一行关联数组,或普通数组,或二者兼有,type:MYSQL_ASSOC 返回关联数组 MYSQL_NUM 普通数组 MYSQL_BOTH 二者兼有,通常使用该函数获取各字段的值
        mysql_fetch_assoc(result) 与mysql_fetch_array()类似,返回的时关联数组
  (5) 获取字段信息 mysql_fetch_field(result[,field_offset]) 返回一个object对象,属性包括包括name,table,not_null,primary_key等
  (6) 选择数据库,mysql_select_db(databasename) 链接上数据库之后,使用该函数选择databasename数据库
  (7) 获取结果集行数 mysql_num_rows(result) ,仅对select语句有效;要取得insert,update,delete执行影响的结果行数,需要使用mysql_affected_rows()

正则表达式

  (1) int ereg(pattern,string[,&regs]) pattern 正则表达式,待匹配string,匹配结果放在regs中,其中regs[0] 存放匹配到的整个字符串,其余的1,2...依次存放合乎规则的字符串。省略regs,则只单纯使用正则表达式作匹配,如果在string中找到pattern模式的匹配,那么该函数返回所匹配字符串的长度,如果没有传递入可选参数regs或者所匹配的字符串长度为0,则返回1,如果没有找到匹配或者出错,返回false。        
  (2) int eregi(pattern,string,regs) 忽略大小写
  (3) split(pattern,string[,limit]) 利用正则表达式分割字符串
  (4) sql_regcase(string) 返回string相匹配的正则表达式,这个正则表达式不区分大小写
  (5) ereg_replace(pattern,replacement,string) 替换匹配字符串,eregi_replace(pattern,replacement,string) 不区分大小写
  (6) 与perl兼容的正则表达式函数,perl正则表达式需要使用定界符(/),比如,"/<\/\w+>/"。函数:array preg_grep(pattern,input[,flag]) 类似ereg(),返回相匹配的元素,当flag=1时,返回数组中时不匹配元素;
  (7) int preg_match(pattern,subject,matches[,flag]); 类似ereg(),捕获的匹配放到mathes中
  (8) int preg_match_all(pattern,subject,matches[,flag]); 全局搜索,找到第一个匹配之后,会继续搜索。搜索的结果存放在matches;
  (9) mixed preg_replace(pattern,replacement,subject[,limit]),其中公pattern,replacement可以是数组。
  (10) array preg_split(pattern,subject[,limit[,flag]])
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 前言:最近比较闲,正好利用这段时间把现在项目用的东西封装一下,方便以后复用,当然好的东西还是要分享。一起学习,一起...
    码渣阅读 3,432评论 5 9
  • 同样的每天24小时,高手们做了什么成为高手?今天我们来看看他们的一天如何度过的。 细节是魔鬼啊,都是细节! 他们强...
    马小惠阅读 317评论 0 1
  • 首推当然是丁墨大大的书,当然她的书不仅是侦探言情,还有现言、古言、科幻爱情的都是超级棒的书,感兴趣的朋友可以搜丁墨...
    长弓心悦阅读 5,907评论 0 1