配色: 字号:
php基础函数数组函数字符串函数
2016-11-02 | 阅:  转:  |  分享 
  
'';?for($j=1;$j<=5;$j++){?echo''th="80"height="30"> '';?}?echo'''';}echo''
数组定义:数组是键值对的集合注意:(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''
''
;//输出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+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,如果转换后有重复下标,则后面的会覆盖前面的
献花(0)
+1
(本文系雨亭之东首藏)
类似文章 更多
发表评论: