基本知识
1、引用
php语言中有引用的概念,相当于指针。如$a = &$b
<?php
$a = 1;
$b = &$a;
$b = "2$b";
echo "$a,$b"
?>
- 1
- 2
- 3
- 4
- 5
- 6
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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
字符串内置函数
(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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
文件操作内置函数
(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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
时间日期内置函数
(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
- 2
数学运算
(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
- 2
- 3
- 4
- 5
- 6
- 7
数据库操作
(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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
正则表达式
(1) int ereg(pattern,string[,®s]) 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]])
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10