|
数组定义:数组是键值对的集合注意:(1)键值对必须成对出现(2)一个数组中不能出现重复的下标,如果出现了,那么后面的将会覆盖前面的 (3)值可以为一个数组(4)下标可以为数字或字符串(1)一维数组声明数组:$arr=array(''key1''=>$val ue1,''key2''=>$value2....);$arr=array($v1,$v2,$v3....);//这里把键省略了 ,系统会分配默认的键分配规则:已使用的最大的整型键+1,如果没有则从0开始;Demo:$arr=array(1,2,3, 4,5);//==>索引数组$arr=array(''color1''=>red,''color2''=>blue);// ==>以字符串为下标的称为关联数组(2)二维数组定义:数组的值又为一个一维数组$arr=array(''colors''= >array(''red'',''blue'',green),''sizes''=>array(1,3,4,5,7));(3)forea ch循环语法:??foreach($arras$key=>$val){}12345//Demo:?$arr=?arr ay(1,4,7,3,7);?foreach($arras$key=>?$val){?echo$key.''=''.$va l.'' '';?}基本函数库(1)数学函数绝对值:abs($number)返回非负数四舍五入:round($floa tnum[,$num])返回浮点数,后面的参数为可选,表示保留几位小数,当为负数时表示往小数点前取位,默认取整?向上取整:ce il()返回浮点数,如ceil(3.13)结果为4向下取整:floor($number)返回浮点数,如floor(3.93) 结果为3取平方根:sqrt($float)返回浮点数?幂:pow($number,$exp)返回数值型,两个参数都为数值 型最大值:max($num1,$num2...$numX)返回最大的那个数最小值:?min($num1,$num2...$n umX)返回最小的那个数取随机数:rand([$min,$max])参数为可选??mt_rand([$min,$max]) 精度要高于rand(),即重复的机率要远低于rand()(2)时间函数??time();返回当前时间戳??date(''Y-m-d H:i:s''[,time()]);当前时间日期格式时间格式:??y?两位数年份,Y四位数年份??m两位数月份,n一位数月 份,M?英文月份的前三位,F英文月份全写??d两位数日期,j一位数日期??w星期中的第几天0-6,D星期的英文前三个 字母,N星期中的第几天1-7,W一年中的第几周??h小时00-11,H小时00-23,g小时1-12,G小时0-23??i ?分钟00-59??s秒00-59a???????????am或pm,A?AM或PM??microtime()获取当 前时间,微秒级,样式:0.989032001337159287,多用于测试程序运行时间,或取随机数??date_default _timezone_set("PRC")设置时间的函数??date_default_timezone_get()获取当前设置的时 区??strtotime(''$timestring'')把时间格式的字符串转换成时间戳Demo:echostrtotime('' 2012-01-01'');?//不写时间则默认为00:00:00也可以直接使用days、weeks、months、years对 时间描述直接使用Demo:echostrtotime("-1days");//输出前一天的时间echostrtotim e("+1week2days4hours2seconds");今日作业:1234567891011121314151 61718192021222324252627282930313233343536373839404142434445464748 49505152535455565758596061626364656667686970717273747576777879808 182838485868788899091//判断一个年份是否是闰年echo''(1)判断一个年份是否为闰年 '';$n= 400;if(($n%4==0&&?$n%100!=0)||?$n%400==0){?echo$n.''年是闰年'';} ?else{?echo$n.''年不是闰年'';}//写出至少三种获取文件扩展名的方法$file=?''test.html'';ec ho'' (2)获取文件后缀名的三种方法 名件名:''.$file.'' 第一种方法: '';$file 1=?pathinfo($file);echo$file1[''extension''].'' '';echo''第二种方法:
'';$file2=?explode(''.'',$file);echoend($file2).'' '';echo ''第三种方法: '';$file3=?strrpos($file,''.'');echosubstr($file,$file 3+1).'' '';//打鱼还是晒网echo''(3)中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三 天打鱼两天晒网”,问这个人在2012年4月9日是在“打鱼“,还是在”晒网”。 '';$start=?strtotime('' 1990-1-1'');$end=?strtotime(''2012-4-9'');$times=?ceil(($end-$star t)/(360024));if($times%5>3||?$times%5==0){?echo''他正在晒网'';}?els e{?echo''他正在打鱼'';}//使用循环输出一个5X4的表格echo'' (4)使用循环输出一个5X4的表格 />'';echo'''';for($ i=1;$i<=4;$i++){?echo'''';?for($j=1;$j<=5;$j++){?echo''th="80"height="30"> '';?}?echo'' '';}echo'' | '' ;//输出100以内(不含100)以被3整除的整数echo'' (5)输出100以内(不含100)以被3整除的整数 >'';for($i=1;$i<100;$i++){?if($i%3==0){?echo$i.'' '';?}}//输出10 0以内(不含100)以被3整除且个位数为6的整数echo'' (6)输出100以内(不含100)以被3整除且个位数为6的整 数 '';for($i=1;$i<100;$i++){?if($i%3==0&&?substr($i,-1)==6){?e cho$i.'' '';?}}//输出1~100之间的偶数(5个数字作为一行输出)echo'' (7)输出1~10 0之间的偶数(5个数字作为一行输出) '';$k=0;for($i=1;$i<=100;$i++){?if($i%2==0) {?echo$i.'' '';?$k++;?}?if($k==5){?$k=0;?echo'' '';?}}//字符 串$str="abcdabcarray";打印出所有字母a的位置echo'' (8)字符串$str="abcdabcarr ay";打印出所有字母a的位置。 '';$str=?''abcdabcarray'';$len=?strlen($str); for($i=0;$i<$len;$i++){?if($str{$i}==?''a''){?echo''第''.++$i.''个是a&n bsp; '';?}}//$a=5;$b=3;$c=9;请写程序排序三个数,不能使用系统函数echo'' (9)$ a=5;$b=3;$c=9;请写程序排序三个数,不能使用系统函数。 '';$arr=?array(5,3,9);$coun t=?count($arr);for($i=1;$i<$count;$i++){?$insval=?$arr[$i];?$in sindex=?$i-1;?while($insindex>=0&&?$insval$arr[$insindex]){? $arr[$insindex+1]=$arr[$insindex];?$insindex--;?}?$arr[$insindex+ 1]=$insval;}print_r($arr);字符串函数??注:字符串有一个索引下标,如$str=“abcd”???a -d从左至右的下标依次为0,1,2,3;可以用$str[0]或$str{0}输出a????int?strlen($string) ?获取字符串长度,返回int型??mix?strpos($string,$find[,$start])??获取某字符串在另一 个字符串中第一次出现的位置,?返回下标值,如果不存在则返回false?$start可选,为开始查找的位置//pos为posit ion的简写?判断某字符串是否包含在另一字符串中时需用全等===flase来判断,因为第一个下标值是0??mix??strrpo s($string,$find[,$start])?返回某字符串在另一字符串中最后一次出现的位置注:另有stripos、str ripos与上面两个一样,只是不区分大小写??int??iconv_strrpos($string,$find[,$encode] )统计$find在$string中最后出现的位置,指定编码后可用于查找中文??mix?strstr($string,$find str)?查找某字符串是否在另一字符串中,?如果不存在则返回false,区分大小写,别名strchr?如果存在,返回查找到的 字符串开始至被查找的字符串结束?Demo:?$str=''abcfdfgdgs'';?var_dump(strstr($st r,''dfg''));??mix?stristr($string,$findstr)?与strstr相同,但是不区分大小写??m ix?strrchr($string,$findstr)?与strstr相同,但是返回的是查找到的最后一个结果?Demo:? $str=''abcfdabcgs'';?var_dump(strstr($str,''abc''));//outputabcg s??str?substr($string,$start[,$length])???截取字符串的一部分,?$length不写 时,截取从开始位置至字符串结束?$start为负数时,为从后往前数第n位?$length为负数时,$length为截取结束的位 置?Demo:?$str=''abcfdfgdgs'';?echosubstr($str,-4,-2);//output gd??bool?iconv(in_code,out_code,$string)把$string从in_code编码转成out _code编码??int?mb_strlen($string[,$encode])使用$encode时返回字符串的字符数,同i conv_strlen一样??str?mb_substr($string,$start[,$length[,$encode]]) ??类似substr,截取字符串,同iconv_substr一样?使用第四个param声明字符集时,$start与$lengt h都以字符数计算?而不以字节数计算,这样就可以实现汉字截取不会乱码??str?mb_strcut($string,$start [,$length[,$encode]])?与mb_substr一样,但是是以字节数计算的注:mb_开头的函数需开启php. ini中extension=php_mbstring.dll1234567/?使用gbk编码截取字符串使之能与英文字母对齐 ?返回utf8编码字符串?/functioniconvstr($string,$length){?return@icon v("gbk","utf-8",mb_strcut(iconv("utf-8","gbk",$string),0,$length) );}??str?strrev($string)?把字符串反转?Demo:?echostrrev(''abc'');//o utputcba12345678//不用strrev实现字符串反转$str=?''abcdef'';$len=?strlen($ str);$newstr=?'''';for($i=$len-1;$i>=0;$i--){?$newstr.=?$str[$i]; }echo$newstr.'' '';??str?str_replace($find,$replace,$string[, $count])??查找并替换字符串,区分大小写?PHP5.0以上可以使用$count来统计替换的次数,$count变量为自定 义??$find可以为数组,如果为数组将查找字符串中每一个存在的值并替换成$replace?Demo:???$vowels?= array("a",?"e",?"i",?"o",?"u",?"A",?"E",?"I",?"O",?"U");??$onlyc onsonants?=?str_replace($vowels,?"",?"HelloWorldofPHP");?//ou tput?HllWrldfPHP??$find与$replace可以同时为数组,那么将查找$find中的值,并替换成$re place中对应下标的值?Demo:?$phrase??=?"Youshouldeatfruits,vegetable s,andfibereveryday.";?$healthy?=array("fruits",?"vegetables ",?"fiber");?$yummy??=array("pizza",?"beer",?"icecream");?$ne wphrase?=?str_replace($healthy,?$yummy,?$phrase);?//output??You shouldeatpizza,beer,andicecreameveryday??str?str_ireplac e($find,$replace,$string)?与str_replace一样,不区分大小写??str?strtr($str ing,$find,$replace)?查找字符串$string中的$find的每一个字符,并替换成$replace对应的字符 ?Demo:?echostrtr(''hillawarld'',''ia'',''eo'');//outputhelloworl d??str?strtr($string,array(“find1”=>$value1,“find2”=>$value2。。。 ))??将字符串$string中的find替换成对应的value??arr?explode($delimiter,$strin g[,$limit])???以$delimiter为分隔符将字符串分隔成数组?$limit为当分隔$limit个后不再继续分隔 ,后面的全归最后一个?Demo:?$str=''a,b,c,d'';?print_r(explode('','',$str,2) );?//outputarray(''a'',''b,c,d'')??str??implode($delimiter,$array)? ??把数组以$delimiter为连接符转换为字符串,别名join()?Demo:?$str=''a,b,c,d'';?$ newstr=explode('','',$str);?var_dump(implode(''#'',$newstr));??str ?strtoupper($string)?将$string中的小写字母全部转换成大写字母??str?strtolower($ string)?将$string中的大写字母全部转换成小写字母??str?ucwords($string)??将所有的单词首 字母大写???str?ucfirst($string)??把字符串的首字母大写??str?trim($string[,st ring$charlist])?去除字符串的首尾空格(或其它字符)?如果不指定第二个参数,trim()将去除这些字符: ""(ASCII32(0x20)),普通空格符。"\t"(ASCII9(0x09)),制表符。"\n"(ASC II10(0x0A)),换行符。"\r"(ASCII13(0x0D)),回车符。"\0"(ASCII0(0x0 0)),空字节符。"\x0B"(ASCII11(0x0B)),垂直制表符。$hello="HelloWorld"; $trimmed=trim($hello,"www.mntuku.cn");var_dump($trimmed);// outputstring(5)"oWor"??str?ltrim($string[,string$charlist] )?去除字符串左边的空格(或其它字符)??str?rtrim($string[,string$charlist])?去 除字符串右边的空格(或其它字符)??str??addslashes($string)?给$string添加转义(单、双引号,转义 符本身)??str??stripslashes($string)??给$string删除转义??int?get_magic_qu otes_gpc();??获取当前自动转义的设置返回0或1??str??ini_get($config_name)??获取php. ini中的配置项,成功时返回获取的值,失败返回false??str??ini_set($config_name,$new_valu e)??设置php.ini中的配置项,成功则返回旧值,失败返回false??str??htmlspecialchars($stri ng[,$flags])?将特殊字符如(<>&")转换为(&lgt;>&")?使用第二个 参数ENT_QUOTES时,会同时转换单引号?使用第二个参数ENT_NOQUOTES时,不对单双引号转换???str??html specialchars_decode($string[,$flags])?把实体字符转换为特殊字符,第二参数同上??bool? ?is_string($string)判断$string是否为字符串,返回boolean值??str??str_shuffle( $string)将字符串重组成一个随机顺序的字符串??str??str_repeat($string,$n)重复一个字符串$n 次??int??substr_count($string,$find[,$start[,$length]])统计$find在$s tring中出现的次数,可指定区域??arr??str_split($string[,$length])将字符串转换成数组,默认 $length=1为1个字符串转换一个数组的值???int??preg_match?(string$pattern,str ing$subject[,array&$matches[,int$flags=0[,int$offset =0]]])执行一次正则匹配,结果返回给数组$matches,函数返回0(未匹配上)或1(匹配上)??int??preg_ match_all?(string$pattern,string$subject[,array&$matches [,int$flags=0[,int$offset=0]]])执行一个全局的正则匹配,结果返回给数组$ma tches,函数返回0(未匹配上)或匹配上的次数??arr??preg_split?(string$pattern,str ing$subject[,int$limit=-1[,int$flags=0]])根据正则来分隔字符串 ,返回数组,未匹配上返回空数组Demo:print_r(preg_split(''/(?));//output???array(''达'',''内'',''科'',''技'');??str?htmlentities($strin g[,ENT_QUOTES])//替换所有实体标签,加ENT_QUOTES则同时替换单双引号数组函数??arr?sort($ array)?值正序排列,会破坏原有的下标,强制转换成新的索引下标??arr??asort($array)?值正序排列,保留原 有键值对关系对数组进行重新排列??arr??arsort($array)?值倒序排列,保留原有键值对关系对数组进行重新排列??a rr??ksort($array)?下标正序排列,保留原有键值对关系对数组进行重新排列??arr??krsort($array) ?下标倒序排列,保留原有键值对关系对数组进行重新排列??int?count($array)??返回数组的长度,如果参数$ar r不是数组,参数非null则返回1???mix?array_search($findval,$array)?查找数组中是否某 个值并返回下标,不存在则返回false?可以查找多维数组中的值(数组)?如果用于判断是否存在,须用===false,如st rpos一样??bool?in_array($findval,$array)?查找数组中是否存在某个值,与上面一样可以查找多维 数组中的数组,返回true或false??bool?array_key_exists($findkey,$array)?查询数 组中是否存在某个下标,返回true或false??bool?isset($variable)?判断变量是否存在,可以用来判断$ array[$key]是否存在??bool?empty($variable)判断变量的值是否为空(false)??arr?a rray_reverse($array)?反转数组,返回反转后的新数组,?原有的关联下标关联关系不变,其它的重新建立索引?D emo:?$arr=array(''a''=>''test'',''100''=>1,2,3,''d'',array(1,2));?var _dump(array_reverse($arr));?//outputarray(array(1,2),''d'',3,2,1, ''a''=>''test'');??arr?array_merge($array1,$array2。。。)???合并多个数组,如果下标 重复了,??索引下标会自动重新分配下标,关联下标会用后面的值覆盖前面的值Demo:$arr1=array(1,2,3,''d ''=>''ddd'');$arr2=array(5,6,3,''d''=>''eee'');print_r(array_merge($ arr1,$arr2));//output?Array(???[0]=>1???[1]=>2???[2]=> 3???[d]=>eee???[3]=>5???[4]=>6???[5]=>3)??arr?array_ keys($array)??获取所有下标并将下标组成新的数组?返回由原数组的下标组成的新数组,建立索引下标??arr?arra y_values($array)?返回由原数组的值组成的新数组,建立索引下标??int?array_push($array,$ value1,$value2。。。)??从尾部给$array追加值,返回新数组的长度值?$value可以有任意多个,可以为数组 类型??int?array_unshift($array,$value1,$value2。。。)??从前面给$array增加值 ,返回新数组的长度值?$value可以有任意多个并可以再为数组类型??str?array_pop($array)?删除数组 $array的最后一个元素,返回被删除的那个值??str?array_shift($array)?删除数组的第一个元素,返回被 删除的那个值??bool?unset($var1[,$var2,$arr[3]。。。])??删除变量,参数可以为一个或多个,u nset和echo一样是语句没有返回值,?这里可以为数组或数组的某个键值对等任意类型$variable=NULL;同样也 是将变量置空??str?end($array)?数组指针指向最后,并返回数组最一个元素的值??str?reset($arra y)数组指针指向最前,并返回数组最第一个元素的值??mix?prev($array)数组指针左移一位,并返回左边一个元素的值 ,指针超出则返回false??mix?next($array)数组指针右移一位,并返回右边一个元素的值,指针超出则返回fals e??mix?current($array)返回数组指针当前指向的值注:如果数组包含有空单元(0或者"",空字符串),? ?则使用prev、next、current在碰到这个单元时也返回?FALSE。123456$transport=?array('' foot'',?''bike'',?''car'',?''plane'');$mode=current($transport);?//$m ode=''foot'';$mode=next($transport);?//$mode=''bike'';$mode= next($transport);?//$mode=''car'';$mode=prev($transport);?//$ mode=''bike'';$mode=?end($transport);?//$mode=''plane''??arr?e ach($array)??返回数组中当前指针的键值对,并将指针右移一位,??如果指超出则返回false,键值对被返回为四个单元的数 组,?键名为?0,1,key?和?value。单元?0?和?key?包含有数组单元的键名,1?和?value?包含有数据。??a rrlist($var1,$var2。。。)=array($v1,$v2。。。)?把数组中的索引下标的值依次赋给list中 对应的变量,list中变量的数量可以小于数组的长度,但不能大于数组的长度,返回的值为原数组Demo:$arr=array (''a''=>1,2,3,4,5);list($a,,$b)=$arr;echo$a.''---''.$b;//output? ?2---4注:each()经常与list()结合来遍历数组12345678910111213ray(''a''=>?''apple'',?''b''=>?''banana'',?''c''=>?''cranberry'');reset($ fruit);while(list($key,?$val)=each($fruit)){?echo"$key=> $val\n";}/Outputs:??a=>appleb=>bananac=>cranberry??/??bo ol?is_array($array)?判断变量是否为数组,返回true或false??bool?shuffle($arra y)对数组进行随机排序,原有的下标不会保留,返回boolean??arr?array_unique($array)去除数组中 的重复的值,返回新数组,原数组不变化Demo:$arr=array(1,''a''=>1,''b''=>2,2);print_r (array_unique($arr));//output??array(1,''b''=>2)??mix?array_rand ($array[,$num])从数组中随机取出一个或多个元素,默认为1个,如果1个则返回随机抽取的那个下标,多个则返回随机抽取 的下标组成的数组??arr?array_slice($array,$start[,$length])截取数组的一部分,返回新数 组,原数组不变,类似substr??arr?array_splice($array,$start[,$length[,$inse rt]])删除数组的一部分,返回由被删除的部分组成的新数组,??原数组被修改成删除+替换后的新数组??不指定$length则删到 最后,$length=0则不删除数组的值??使用$insert在$start部分插入新的值[$insert可以为字符串或数组]1 234567891011121314151617181920212223242526272829303132$arr=?arra y(1,2,3,4);$new=?array_rand($arr,1);//$new的值为0-3随机一个??$arr=?ar ray(1,2,3,4);$new=?array_rand($arr,2);//$new为长度2的数组,值为0-3随机,值不重 复??$arr=?array(1,2,3,4);$new=?array_slice($arr,1,-1);//$newis array(2,3);??$input=?array("red",?"green",?"blue",?"yellow");array_splice($input,2);//$inputisnowarray("red","green")??$input=?array("red",?"green",?"blue",?"yellow");array_splice($input,1,-1);//$inputisnowarray("red","yellow")??$input=?array("red",?"green",?"blue",?"yellow");array_splice($input,1,?count($input),?"orange");//$inputisnowarray("red","orange")??$input=?array("red",?"green",?"blue",?"yellow");array_splice($input,-1,1,?array("black",?"maroon"));//$inputisnowarray("red","green",//?????????"blue","black","maroon")$input=?array("red",?"green",?"blue",?"yellow");array_splice($input,3,0,?"purple");//$inputisnowarray("red","green",//?????????"blue","purple","yellow");??str?serialize($array)?把数组序列化成字符串??arr?unserialize($array)把被系列化的数组反系列化加数组??arr?array_change_key_case($array[,$mode])把数组中的下标都转换成大写或小写,返回新数组,$mode的值可以为CASE_UPPER或者CASE_LOWER,$mode默认为CASE_LOWER,如果转换后有重复下标,则后面的会覆盖前面的 |
|