PHP学习笔记(三)
八.函数
1.任意数量的参数
func_get_args():接收一个数组,里面包含所有参数
func_num_args():返回参数的个数
func_get_arg(整数):返回指定的参数
示例程序:
function stu_name(){
$arr=func_get_args();
foreach($arr as $key=>$value){
echo "第".$key."的姓名是:".$value."<br>";
}
echo "一共有".func_num_args()."名学生<br>";
echo "第3名学生的姓名是:".func_get_arg(2).'<br>';
}
stu_name("张三","李四","王五","赵六","周七","李八");
输出结果:
第0的姓名是:张三
第1的姓名是:李四
第2的姓名是:王五
第3的姓名是:赵六
第4的姓名是:周七
第5的姓名是:李八
一共有6名学生
第3名学生的姓名是:王五
--------------------------------------------------------------------------
2.变量函数
可以在变量后加(),系统会自动查找与变量值同名的函数进行调用
function show_date(){
echo date("Y-m-d");
}
show_date();
输出结果:
2017-02-27
--------------------------------------------
$houdunwang="show_date";
function show_date(){
echo date("Y-m-d");
}
echo $houdunwang;
输出结果:
show_date
---------------------------------------------
$houdunwang="show_date";
function show_date(){
echo date("Y-m-d");
}
$houdunwang();
输出结果:
2017-02-27
-------------------------------------------------------
3.递归函数
在函数体内,调用本函数
在这种情况下要添加一个控制函数结束的条件,否则会陷入死循环
$result=1;
function jc($i){
if($i>1){
$result=$i*jc($i-1);
}else
{
$result=$i;
}
return $result;
}
echo jc(5);
输出结果:120
------------------------------------------------------------
4.内部函数
在函数内部再定义一个函数(类似于以前学习的函数嵌套)
function houdunwang(){
function bbs(){
echo"后盾网视频共享平台,www.houdunwang.com";
}
bbs();
}
houdunwang();
输出结果:后盾网视频共享平台,www.houdunwang.com
九.字符串
1.定义字符串
1).单引号:''
2).双引号:""
3).定界符<<<
用定界符定义的字符串可以识别所有转义字符,换行符,单引号,双引号,以及自动匹配变量值.
$url="http://www.houdunwang.com";
$hdw=<<<houdunwang
后盾网免费视频分享,北{$url}国风光,千'里冰封,万里雪飘."望长城内外,惟余莽莽,山河上下",顿失滔滔<br>原驰蜡象
houdunwang;(注意这行的开头必须顶格书写,顶格书写,顶格书写)
echo $hdw;
十.字符串处理函数
1.PHP对字符串空格的处理
strlen(字符串):返回字符串的长度
trim(字符串):去掉字符串左右的空格
ltrim(字符串):去掉字符串左边的空格
rtrim(字符串):去掉字符串右边的空格
trim,ltrim,rtrim共有另个参数,第一个参数时待操作的字符串,第二个字符串是待删除的字符,第二个参数为可选参数,默认情况下表示空格
示例程序:
$houdunwang=" http://ww.houdunwang.com ";
echo "$houdunwang的长度是".strlen($houdunwang);
echo '<br>------------------------------<br>';
echo "trim($houdunwang)的长度是".strlen(trim($houdunwang)).'<br>';
echo trim($houdunwang);
echo '<br>------------------------------<br>';
echo "ltrim($houdunwang)的长度是".strlen(ltrim($houdunwang)).'<br>';
echo ltrim($houdunwang);
echo '<br>------------------------------<br>';
echo "rtrim($houdunwang)的长度是".strlen(rtrim($houdunwang)).'<br>';
echo rtrim($houdunwang);
输出结果:
33
------------------------------
trim( http://ww.houdunwang.com )的长度是24
http://ww.houdunwang.com
------------------------------
ltrim( http://ww.houdunwang.com )的长度是29
http://ww.houdunwang.com
------------------------------
rtrim( http://ww.houdunwang.com )的长度是28
http://ww.houdunwang.com
------------------------------------------------------------------------------------
2.PHP对字符串大小写的处理
strtoupper 将字符串转换成大写
strtolower 将字符串转换成小写
ucfirst 首字母大写
ucwords 单词首字母大写
示例程序
$BBS="BBS.HOUDUNWANG.COM";
echo strtolower($BBS);
echo '<br>-------------------<br>';
echo strtoupper("aBcdefgHIJK");
echo '<br>-------------------<br>';
echo ucfirst("my favorite bike");
echo '<br>-------------------<br>';
echo ucwords("you are a beautiful girl");
输出结果:
bbs.houdunwang.com
-------------------
ABCDEFGHIJK
-------------------
My favorite bike
-------------------
You Are A Beautiful Girl
------------------------------------------------------------------------------------------
3.字符串填充函数
str_pad("字符串","长度","填充的内容",填充的方向);
填充的方向:STR_PAD_BOTH,双向填充,如果填充的是奇数个则右侧的多填充
左侧少填充
STR_PAD_LEFT,左侧填充
STR_PAD_RIGHT,右侧填充
注意:当填充的新字符串的长度小于原字符串的长度时,就不能执行填充
示例程序
$BBS="BBS.HOUDUNWANG.COM";
$str1=str_pad($BBS,25,"+",STR_PAD_BOTH);
echo $str1;
echo '<br>-------------------<br>';
$str2=str_pad($BBS,25,"+",STR_PAD_LEFT);
echo $str2;
echo '<br>-------------------<br>';
$str3=str_pad($BBS,25,"+",STR_PAD_RIGHT);
echo $str3;
echo '<br>-------------------<br>';
$str4=str_pad($BBS,8,"+",STR_PAD_BOTH);
echo $str4;
输出结果:
+++BBS.HOUDUNWANG.COM++++
-------------------
+++++++BBS.HOUDUNWANG.COM
-------------------
BBS.HOUDUNWANG.COM+++++++
-------------------
BBS.HOUDUNWANG.COM
------------------------------------------------------------------------------------------------------
4.字符串翻转函数
strrev();
-------------------------------------------------------------------------------------------------------
5.md5加密
md5();
示例程序
if(md5($_GET['pwd'])=='bf320fa3295cf4770c58db4db5a8ef04'){
echo "登陆成功";
}else{
echo "密码错误,登录失败";
}
'bf320fa3295cf4770c58db4db5a8ef04'是'houdunwang'经过md5()加密的结果
<html>
<head></head>
<body>
<form method="get" action="">
用户名:<input type="text" name="uname"><br>
密码:<input type="password" name="pwd"><br>
<input type="submit" value="用户登录"><br>
</form>
</body>
</html>
-----------------------------------------------------------------------------------------------------------
6.格式化金额字符串函数
number_format("字符串",小数位数,小数点,千位分隔符);
示例程序
$number1="1234567";
echo number_format($number1,3,'!','|');
输出结果:
1|234|567!000
一般情况下只要写number_format("字符串",3);即可
------------------------------------------------------------------------------------------------------------
7.字符串拆分成数组
explode("用于在哪个字符串进行拆分","拆分的字符串","返回数组元素的数目");
$str1="今天是周二,我很开心,不知道什么原因";
$arr=explode(',',$str1,2);
print_r ($arr);
输出结果:
Array ( [0] => 今天是周二 [1] => 我很开心,不知道什么原因 )
-------------------------------------------------------------------------------------------------------------
8.把数组元素组合成字符串
implode("连接字符串",数组);
$arr=array("北国风光","千里冰封","万里雪飘");
$arr=implode(",",$arr);
echo $arr;
输出结果:
北国风光,千里冰封,万里雪飘
9.字符串输出
9.1.echo:输出一个或者多个字符
9.2.print:输出字符串
9.3.printf():格式化输出字符串
示例程序
$str1="中华人民共和国成立68周年";
echo $str1;
echo '<br>-----------------------------------<br>';
$str2="2017年值建党90周年之际,祝愿祖国繁荣昌盛,国泰民安";
print $str2;
echo '<br>-----------------------------------<br>';
$num1=1992;
$num2=911;
printf("%f年的%f是一个好数字",$num1,$num2);
输出结果:
中华人民共和国成立68周年
-----------------------------------
2017年值建党90周年之际,祝愿祖国繁荣昌盛,国泰民安
-----------------------------------
1992.000000年的911.000000是一个好数字
-----------------------------------------------------------------------------------------------------------
10.分割字符串
10.1.substr();对字符串进行制定数量的截取
$str1="中华人民共和国成立68周年";
$str2="welcome to Beijing";
echo substr($str1,2,6);
echo '<br>'.substr($str2,2,5);
echo '<br>'.substr($str2,-5,5);
输出结果:
华人民 注意每个汉字占两个字符
lcome 从第二个字符开始截取5个字符,字符编号从0开始
ijing 从倒数第5个字符开始截取5个字符,字符反向编号从-1开始
------------------------------------------------------------------------------------
10.2 strchr() strstr()是它的别名 查找一个字符串在另个字符串中第一次出现,返回从该位置到字符串结尾的字符串
stristr():和strchr()的区别在于前者不区分大小写,后者区分
示例程序
$str1="中华人民共和国成立68周年";
$str2="welcome to Beijing";
var_dump(strchr($str1,"人民"));
echo '<br>-----------------------------------<br>';
var_dump(strchr($str1,"美国"));
echo '<br>-----------------------------------<br>';
var_dump(strchr($str2,"Co"));
echo '<br>-----------------------------------<br>';
var_dump(stristr($str2,"Co"));
输出结果:
string '人民共和国成立68周年' (length=20)
-----------------------------------
boolean false
-----------------------------------
boolean false
-----------------------------------
string 'come to Beijing' (length=15)
------------------------------------------------------------------------------------------
10.3 strrchr();查找一个字符在另一个字符串中最后一次出现,返回从该位置到字符串结尾的所有内容
--------------------------------------------------------------------------------------------
10.4 strpos();查找一个字符串在另个字符串中第一次出现的位置
注意:这个函数是严格区分大小写的
示例程序
$str1="中华人民共和国成立68周年,人民大会堂张灯结彩";
$str2="welcome to Beijing";
var_dump(strrchr($str1,"人民"));
echo '<br>-----------------------------------<br>';
var_dump(strpos($str2,"c"));
echo '<br>-----------------------------------<br>';
var_dump(strpos($str2,"C"));
输出结果:
string '人民大会堂张灯结彩' (length=18)
-----------------------------------
int 3
-----------------------------------
boolean false
stripos();是不区分大小写的
strrpos();从后面开始查找一个字符串在另个字符串中第一次出现的位置,返回的值是按照该字符串在原字符串中最后的位置
10.5 strtok();
示例程序1.
$str="黄四娘家花满蹊,千朵万朵压枝低,留连戏蝶时时舞,自在娇莺恰恰啼";
$str=strtok($str,",");
while($str){
echo $str.'<br>';
$str=strtok(",");
}
返回结果
黄四娘家花满蹊
千朵万朵压枝低
留连戏蝶时时舞
自在娇莺恰恰啼
执行特点:第一执行的时候会把第一次分离结果输出来,并记住剩下的内容,下次执行时默认对剩下的内容进行操作
--------------------------------------------------------------------------------------------------------------------------------------------
示例程序2
$str="黄四娘家花满蹊,千朵万朵压枝低,留连戏蝶时时舞,自在娇莺恰恰啼,0,WampServer,PPT,WPS";
$str=strtok($str,",");
while($str){
echo $str.'<br>';
$str=strtok(",");
}
返回结果
黄四娘家花满蹊
千朵万朵压枝低
留连戏蝶时时舞
自在娇莺恰恰啼
这时候我们发现,程序并没有对0以后的内容进行分割,这是因为0==false,循环结束,不再进行分割
为了解决这个问题:
首先我们要明确有哪几种情况被认为是false
1.false 2.0 3.0.0 4.NULL 5.空数组 6.空字符串 7.字符串0
示例程序3
$str="黄四娘家花满蹊,千朵万朵压枝低,留连戏蝶时时舞,自在娇莺恰恰啼,0,WampServer,PPT,WPS";
$str=strtok($str,",");
while($str!==false){
echo $str.'<br>';
$str=strtok(",");
}
输出结果
黄四娘家花满蹊
千朵万朵压枝低
留连戏蝶时时舞
自在娇莺恰恰啼
0
WampServer
PPT
WPS
除了真正的false意外我们不想让程序因为其他类型的相当于false的内容而终止,那么此时我们不光要对值进行判断,还要对类型
进行判断,只有当条件在值和类型都为false才结束循环,否则继续执行循环体
------------------------------------------------------------------------------------------------------------------
10.6 parse_str();将字符串拆分成变量,前提是字符串中存在等于号
示例程序
$bbs="http://www.houdunwang.com?uname=zhangsan&age=33&sex=male";
$str=substr($bbs,(strpos($bbs,"?")+1));
parse_str($str);
echo "欢迎来到后盾网,你的用户名是{$uname},你的年龄是{$age},你的性别是{$sex}";
输出结果:
欢迎来到后盾网,你的用户名是zhangsan,你的年龄是33,你的性别是male
-----------------------------------------------------------------------------------------------
10.7 chunk_split(需要拆分的字符串,按多少长度进行拆分,拆后之后的间隔符);
示例程序:
$str="to.be.or.not.to.be.is.a.question";
echo chunk_split($str,3,"-----");
输出结果:
to.-----be.-----or.-----not-----.to-----.be-----.is-----.a.-----que-----sti-----on-----
11.字符串替换函数
str_replace("要查找的字符","想要替换成的字符","被替换的整个字符串",变量);最后一个参数表示统计替换一共
发生了多少次
该函数是区分大小写的,如果想要它不区分大小写在函数前加i:str_ireplace();
示例程序1
$str="后盾网www.houdunwang.com,下载高清视频请登录论坛";
$str1=str_replace("h","H",$str);
echo $str1;
输出结果
后盾网www.Houdunwang.com,下载高清视频请登录论坛
---------------------------------------------------------------------------
可以通过定义数组来完成对多个字符的替换
示例程序2
$str="后盾网www.houdunwang.com,下载高清视频请登录论坛";
$arr1=array("w","h","d","c");
$arr2=array("W","H","D","C");
$str1=str_replace($arr1,$arr2,$str);
echo $str1;
输出结果
后盾网WWW.HouDunWang.Com,下载高清视频请登录论坛
---------------------------------------------------------------------------
这个函数不仅能实现对字符串的替换,还能实现对数组中元素的替换
示例程序3
$arr=array("www.houdunwang.com","bbs.houdunwang.com");
$arr1=array("w","h","d","c");
$arr2=array("W","H","D","C");
$str1=str_replace($arr1,$arr2,$arr,$num);
print_r($arr);
echo '<br>'.$num;
输出结果
Array ( [0] => www.houdunwang.com [1] => bbs.houdunwang.com )
11
-------------------------------------------------------------------------------
12.字符串比较函数
12.1 strcmp(字符串1,字符串2);
此处,如果字符串1=字符串2,则返回0
如果字符串1<字符串2,则返回-1
如果字符串1>字符串2,则返回1
这个函数区分大小写
12.2 strcasecmp(字符串1,字符串2);
不区分大小写
实际上比较的是每个字符的ASCII码.
-------------------------------------------
12.3 strnatcmp(字符串1,字符串2);
实现的是对自然数的比较
示例程序4
$str1="10";
$str2="2";
echo strcmp($str1,$str2);
echo '<br>';
echo strnatcmp($str1,$str2);
输出结果
-1
1
---------------------------------------------------
12.4 strncmp(字符串1,字符串2,变量n)
第三个参数表示比较字符串1和字符串2的前n个数
三个参数缺一不可
示例程序5
$str1="1004";
$str2="1005";
echo strncmp($str1,$str2,3);
输出结果
0
--------------------------------------------------------------------------------
12.5 similar_text(字符串1,字符串2);
返回字符串1和字符串2中相同的位数
示例程序6
$str1="houdunwang";
$str2="houdunsina";
echo similar_text($str1,$str2);
输出结果:
7
similar_text(字符串1,字符串2,参数3)第三个参数返回两个字符串相似的百分比,参数在非必要条件下可以省略
示例程序7
$str1="黄梅时节家家雨.青草池塘处处蛙";
$str2="黄梅戏天仙配脍炙人口,广为流传";
similar_text($str1,$str2,$percent);
echo $percent;
输出结果
24.137931034483
---------------------------------------------------------------------------
12.6 strtr();字符串替换函数
示例程序8
echo strtr("www.houdunwang.com","ham","HAM");
输出结果
www.HoudunwAng.coM
--------------------------------------------
示例程序9
通过关联数组来实现字符替换
$arr=array("h"=>"H","a"=>"A","m"=>"M");
echo strtr("www.houdunwang.com",$arr);
输出结果
www.HoudunwAng.coM
-----------------------------------------------------------------------------------------------------
12.7 substr_count();查找一个字符串在另一个字符串中出现的次数
语法
substr_count(字符串1,字符串2,参数3,参数4);参数3表示从什么位置开始查找,参数4表示从参数3所示位置开始查找字符串的长度
变量3和变量4可以省略
示例程序10
echo substr_count("后盾网www.houdunwang.com,下载高清视频请登录论坛bbs.houdunwang.com","houdunwang");
输出结果
2
-----------------------------------------------------------------------------------------------
示例程序11
echo substr_count("后盾网www.houdunwang.com,下载高清视频请登录论坛bbs.houdunwang.com","houdunwang",15,30);
输出结果
1
13.字符串处理函数
13.1 parse_url();解析URL,返回其组成部分,返回的是一个数组
示例程序1
$url="http://www.houdunwang.com/admin/index.php>m=channel&a=add";
$arr=parse_url($url);
echo "<pre>";
print_r ($arr);
echo '<br>';print_r(parse_url($url, PHP_URL_SCHEME));
echo '<br>';print_r(parse_url($url, PHP_URL_HOST));
echo '<br>';print_r(parse_url($url, PHP_URL_PATH));
输出结果
Array
(
[scheme] => http
[host] => www.houdunwang.com
[path] => /admin/index.php>m=channel&a=add
)
http
www.houdunwang.com
/admin/index.php>m=channel&a=add
-----------------------------------------------------------------------
13.2 urlencode();URL编码
urldecode();URL解码,解码已编码的内容
示例程序2
$str="后盾网PHP课程";
echo urlencode($str);
echo '<br>';
echo urldecode(urlencode($str));
输出结果
%BA%F3%B6%DC%CD%F8PHP%BF%CE%B3%CC
后盾网PHP课程
--------------------------------------------------------------------------------
13.3 htmlentities();将括号的中内容转化为html实体
示例程序
$str="<h1>bbs.houdunwang.com</h1>";
echo htmlentities($str);
输出结果:
<h1>bbs.houdunwang.com</h1>
注意:该函数可以传三个参数,参数1代表实体化的内容;
参数2代表准换规则:ENT_COMPAT(只转换双引号)默认的规则
ENT_QUOTES(转换单双引号)
ENT_NOQUOTES(不转换任何引号)
如果实体化内容中包含中文,则不能实现转换,这是与视频教程里有出入的地方
htmlspecialchars();也是实现实体转换的函数,不处理中文
它的反函数是
htmlspecialchars_decode();将实体准换回原内容
----------------------------------------------------------------------------------------------------------------------------------------------------
addslashes():在预定义字符串前添加转义字符
get_magic_quotes_gpc:获得PHP.ini中是否开启自动转义
stripslashes();将转义字符前的反斜杠删除
示例程序
$uname= $_GET['uname'];
$cname=$_GET['cname'];
if(!get_magic_quotes_gpc()){
$cname=addslashes($cname);
$uname=addslashes($uname);
}
echo $cname;
echo '<br>';
echo $uname;
<form action="" method="get">
课程名:<input type="text" name="cname"><br>
用户名:<input type="text" name="uname"><br>
<input type="submit",value="提交">
</form>
输出结果:
get_magic_quotes_runtime();查看获取外部文件或者数据库资料时是否进行自动转义
set_magic_quotes_runtime();设置获取外部文件或者数据库资料时是否进行转义
set_magic_quotes_runtime(1);转义
set_magic_quotes_runtime(0);不转义
strip_tags();去除HTML,XML,PHP中的标签
十一.数组
在一个变量中,存储0个,1个或者多个数组,当数组元素个数为0时该数组为一个空数组.
我们可以通过每个元素独一无二的索引ID来访问它们.
定义数组的语法
$数组名=arrar(元素1,元素2,....);
元素的索引值是从0开始的
示例程序1(普通数组)
$arr=array("李海","PHP课程","29","1982-05-28");
echo "该学员的姓名是:".$arr[0]." 所学课程是:".$arr[1]." 年龄是:".$arr[2]."
生日是:".$arr[3];
输出结果:
该学员的姓名是:李海 所学课程是:PHP课程 年龄是:29 生日是:1982-05-28
-------------------------------------------------------------------------
示例程序2(关联数组)类似于以前学习的键值对
$arr=array("uname"=>"李海","uclass"=>"PHP课程","uage"=>"29","ubirth"=>"1982-05-28");
echo "该学员的姓名是:".$arr['uname']." 所学课程是:".$arr['uclass']." 年龄是:".$arr['uage']." 生日是:".$arr['ubirth'];
输出结果:
该学员的姓名是:李海 所学课程是:PHP课程 年龄是:29 生日是:1982-05-28
当通关关联数组定义时,我们可以通过制定的"键值"来访问对应的元素信息
---------------------------------------------------------------------------------
示例3(多维数组)
$arr=array(array("uname"=>"李海","uclass"=>"PHP课程","uage"=>"29","ubirth"=>"1982-05-28"),
array("uname"=>"周涛","uclass"=>"DIV+CSS","uage"=>"18","ubirth"=>"2000-05-28"));
echo "学员0的姓名是:".$arr[0]['uname']." 所学课程是:".$arr[0]['uclass']." 年龄是:".$arr[0]['uage']." 生日是:".$arr[0]['ubirth'];
echo '<br>';
echo "学员1的姓名是:".$arr[1]['uname']." 所学课程是:".$arr[1]['uclass']." 年龄是
:".$arr[1]['uage']." 生日是:".$arr[1]['ubirth'];
输出结果
学员0的姓名是:李海 所学课程是:PHP课程 年龄是:29 生日是:1982-05-28
学员1的姓名是:周涛 所学课程是:DIV+CSS 年龄是:18 生日是:2000-05-28
-----------------------------------------------------------------------------------------
示例程序4
$arr[0]="后盾网";
$arr[1]="PHP免费视频教程";
$arr[2]="大雪压青松,青松挺且直,要知松高洁,待到雪化时";
print_r($arr);
输出结果
Array ( [0] => 后盾网 [1] => PHP免费视频教程 [2] => 大雪压青松,青松挺且直,要知松高洁,待到雪化时 )
------------------------------------------------------------------------------------------------
示例程序5
$arr1[]="岱宗夫如何,齐鲁青未了";
$arr1[]="造化钟神秀,阴阳割昏晓";
$arr1[]="荡胸生层云.决眦入归鸟";
$arr1[]="会当凌绝顶,一览众山小";
print_r($arr1);
输出结果
Array ( [0] => 岱宗夫如何,齐鲁青未了 [1] => 造化钟神秀,阴阳割昏晓 [2] => 荡胸生层云.决眦入归鸟 [3] => 会当凌绝顶,一览众山小 )
-----------------------------------------------------------------------
示例程序6
$arr["jiangsu"]=array();
$arr["jiangsu"][]="suzhou";
$arr["jiangsu"][]="wuxi";
$arr["jiangsu"][]="xuzhou";
$arr["jiangsu"][]="taizhou";
$arr["jiangsu"][]="nanjing";
$arr["jiangsu"][]="jiangyin";
$arr["jiangsu"][]="yancheng";
$arr["jiangsu"][]="suqian";
$arr["jiangsu"][]="huaian";
$arr["jiangsu"][]="zhenjiang";
$arr["jiangsu"][]="changzhou";
$arr["zhejiang"]=array();
$arr["zhejiang"][]="hangzhou";
$arr["zhejiang"][]="quzhou";
$arr["zhejiang"][]="ningbo";
$arr["zhejiang"][]="taizhou";
echo '<pre>'; 这句的作用是格式化输出数组.
print_r($arr);
输出结果:
Array
(
[jiangsu] => Array
(
[0] => suzhou
[1] => wuxi
[2] => xuzhou
[3] => taizhou
[4] => nanjing
[5] => jiangyin
[6] => yancheng
[7] => suqian
[8] => huaian
[9] => zhenjiang
[10] => changzhou
)
[zhejiang] => Array
(
[0] => hangzhou
[1] => quzhou
[2] => ningbo
[3] => taizhou
)
)
----------------------------------------------------------------------
foreach遍历一维数组
示例程序5
$arr[]="后盾网";
$arr[]="PHP视频教程";
$arr[]="学好基础,才可以进行实战";
foreach($arr as $element){
echo "<span style='border:solid 2px #ccc;display:block;padding:4px;color:#f00;'>".$element."</span>";
}
输出结果
------------------------------------------------------------------------
示例程序6
$arr["网站"]="后盾网";
$arr["课程"]="PHP视频教程";
$arr["课时"]="300课时";
foreach($arr as $key=>$value){
echo $key.$value;
if($key=="课程"){
echo $key."<span style='border:solid 1px #ccc;padding:4px;color:#f00;'>".$value."</span>";
}
}
-------------------------------------------------------------------------
foreach遍历二维数组
示例程序7
$arr["PHP"]['cname']="PHP课程";
$arr["PHP"]['ctime']="300课时";
$arr["DIV"]['cname']="DIV+CSS课程";
$arr["DIV"]['ctime']="100课时";
foreach($arr as $key=>$value){
echo $key.":";
if(is_array($value)){
foreach($value as $k=>$v){
echo '<br>'.$k.$v;
}
}else{
echo $value;
}
echo '<br>';
}
输出结果:
PHP:
cnamePHP课程
ctime300课时
DIV:
cnameDIV+CSS课程
ctime100课时
-------------------------------------------------------------------
给输出加上一定的CSS代码
$arr["PHP"]['cname']="PHP课程";
$arr["PHP"]['ctime']="300课时";
$arr["DIV"]['cname']="DIV+CSS课程";
$arr["DIV"]['ctime']="100课时";
foreach($arr as $key=>$value){
echo "<div style='border:solid 1px #ccc;margin-bottom:2px;font-size:14px;'>";
if(is_array($value)){
foreach($value as $k=>$v){
echo $key.":";
echo '<br>'.$k.'=>'.$v;
}
}else{
echo $value;
}
echo "</div>";
}
输出结果:
implode(连接符,组合的数组):把数组组合成字符串;
explode(按什么字符进行拆分,拆分的字符串,返回数组元素的数目):把字符串拆分成数组;
in_array(元素,数组,'可选参数');返回值为布尔型,判断元素是否包含在数组当中
存在返回TRUE
不存在返回FALSE
可选参数可以省略,是用来指定判断的元素类型,类型要使用引号,否则会报错
当元素在数组中,并且类型与可选参数一致时返回真,否则返回假
示例程序1
$arr=array("莫",1,TRUE,NULL,3.0);
var_dump(in_array(3.0,$arr,'float'));
输出结果
boolean true
--------------------------------------------------------------------------------------
each();将数组元素拆分成新的数组
示例程序
$arr=array("url"=>"bbs.houdunwang.com","webname"=>"后盾网论坛");
$arr_1=each($arr);
echo '<pre>';
print_r($arr_1);
$arr_1=each($arr);
print_r($arr_1);
输出结果
Array
(
[1] => bbs.houdunwang.com
[value] => bbs.houdunwang.com
[0] => url
[key] => url
)
Array
(
[1] => 后盾网论坛
[value] => 后盾网论坛
[0] => webname
[key] => webname
)
---------------------------------------------------------------------
list();把数组元素赋值给变量
示例程序
$arr4=array("bbs.houdunwang.com","后盾网论坛");
list($url,$webname)=$arr4;
echo $url.'----'.$webname;
输出结果
bbs.houdunwang.com----后盾网论坛
------------------------------------------------------------------------
list();用于二维数组
示例程序
$arr5=array("url"=>"bbs.houdunwang.com","webname"=>"后盾网论坛");
list($k,$v)=each($arr5);
echo $k.'----'.$v;
echo '<br>--------------------<br>';
list($k,$v)=each($arr5);
echo $k.'----'.$v;
输出结果
url----bbs.houdunwang.com
----------------------
webname----后盾网论坛
count(数组);统计数组中元素的个数
当想要统计多维数组的元素个数的时候.只要写成count(数组,1),系统就会自动递归统计出所有的数组元素的个数
示例程序1
$arr=array(array(),array());
echo count($arr,1);
输出结果
2
----------------------------------------------------------
示例程序2
$arr=array(array("www.houdunwang.com","后盾网视频教程","baidu"),array("bbs.houdunwang.com","后盾网论坛","sina"))
echo count($arr,1);
输出结果
8
-----------------------------------------------------------
reset()把数组内部指针移到数组第一个元素,并返回元素值
end()把数组内部指针移到数组最后一个元素,并返回元素值
prev()把数组指针向上移动一位,并返回元素值,如果到数组开头,则返回假
next()把数组指针向下移动一位,并返回元素值,如果到数组结尾,则返回假
如果当前元素为空,或0,或0.0,或字符'0'则返回假
current()返回当前指针指向的数组元素
示例程序2
$arr=array("www.houdunwang.com","后盾网视频教程","baidu",0,"bbs.houdunwang.com","后盾网论坛","sina");
do{
echo current($arr).'<br>';
}while(next($arr!==false));
输出结果
www.houdunwang.com
后盾网视频教程
baidu
0
bbs.houdunwang.com
后盾网论坛
sina
注意当直接使用next($arr)作为判断循环是否结束的条件的时存在一个问题,因为如果当前元素为空,或0,或0.0,或字符'0'则返回假
如果数组元素中间存在上述元素,则会终止循环,与我们想要达到的遍历效果不符,所以我们将判断条件改成如示例程序
所示的样子.
-----------------------------------------------------------------------------
用list()实现数组遍历
示例程序3
$arr=array("www.houdunwang.com","后盾网视频教程","baidu",0,"bbs.houdunwang.com","后盾网论坛","sina");
while(list($k,$v)==each($arr)){
echo $v.'<br>';
}
输出结果
www.houdunwang.com
后盾网视频教程
baidu
0
bbs.houdunwang.com
后盾网论坛
sina
---------------------------------------------------------------------------------
key()返回当前指针指向元素的键名
----------------------------------------------------------------------------------------------------------------------------------------------
array_search():在数组中查找指定元素,若存在则返回该元素对应的键值,否则返回FALSE
array_change_key_case(数组,可选参数):更改数组键名大小写
可选参数作用是指定键名更改为大写还是小写
大写CASE_UPPER
小写CASE_LOWER,小写为默认值
注意:array_change_key_case(数组,可选参数)并非作用于原数组,而是将元素复制一份,在新的数组中转换键名大小写
示例程序1:
function dump($arr){
echo '<pre>';
print_r($arr);
}
$arr=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程");
array_change_key_case($arr,CASE_UPPER);
dump($arr);
输出结果
Array
(
[url] => houdunwang
[class1] => PHP视频教程
[class2] => DIV教程
)
------------------------------------------------------------------------------
示例程序2:
$arr=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程");
$arr0=array_change_key_case($arr,CASE_UPPER);
dump($arr0);
输出结果
Array
(
[URL] => houdunwang
[CLASS1] => PHP视频教程
[CLASS2] => DIV教程
)
--------------------------------------------------------------------------
当出现下列情况时,我们来看看输出结果
示例程序3:
$arr=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class2"=>"HTML教程");
$arr0=array_change_key_case($arr,CASE_UPPER);
dump($arr0);
输出结果
Array
(
[URL] => houdunwang
[CLASS1] => PHP视频教程
[CLASS2] => HTML教程
)
-----------------------------------------------------------------------------
array_chunk(参数1,参数2,参数3(可选));把数组进行拆分,该函数是直接作用于原数组的
参数1:待拆分的数组
参数2.拆分后的数组每个键值后面共有几个元素
参数3.默认值是FALSE,当指定其为TRUE是按照原来的键值进行拆分
示例程序4
$arr=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
//array_chunk($arr,2);
dump(array_chunk($arr,2));
输出结果:
Array
(
[0] => Array
(
[0] => houdunwang
[1] => PHP视频教程
)
[1] => Array
(
[0] => DIV教程
[1] => HTML教程
)
[2] => Array
(
[0] => mysql
)
)
-------------------------------------------------------------------------
示例程序5
$arr=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
//array_chunk($arr,2);
dump(array_chunk($arr,2,TRUE));
输出结果
Array
(
[0] => Array
(
[url] => houdunwang
[class1] => PHP视频教程
)
[1] => Array
(
[class2] => DIV教程
[Class3] => HTML教程
)
[2] => Array
(
[class4] => mysql
)
)
------------------------------------------------------------------
array_combine(数组1,数组2);生成新数组
示例程序6
$arr1=array("url","class1","class2","Class3","class4");
$arr2=array("houdunwang","PHP视频教程","PHP视频教程","HTML教程","mysql");
dump(array_combine($arr1,$arr2))
输出结果
Array
(
[url] => houdunwang
[class1] => PHP视频教程
[class2] => PHP视频教程
[Class3] => HTML教程
[class4] => mysql
)
当array_combine中的两个数组元素个数不相同时,程序会报错
----------------------------------------------------------------------------
array_diff(数组1,数组2);检索两个数组的差集,返回值为一个数组
示例程序7
$arr1=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
$arr2=array("url"=>"houdunwang","class1"=>"PHP视频教程");
dump(array_diff($arr1,$arr2));
输出结果
Array
(
[class2] => DIV教程
[Class3] => HTML教程
[class4] => mysql
)
该函数可以传入多个数组array_diff(数组1,数组2,数组3,....)首先数组1会和数组2比较得出差集,然后此差集在和数组和比较得到新的差集,一次类推,如果数组1的元素都包含在其他数组元素的并集中,则返回一个空数组.
-------------------------------------------------------------------------------------------
array_diff_key();返回在其他数组中不存在的键名;多用于关联数组,返回值为数组,可以指定多个参数
示例程序
$arr1=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
$arr2=array("url"=>"houdunwang","class1"=>"DIV教程","class2"=>"HTML教程");
dump(array_diff_assoc($arr1,$arr2));
输出结果
Array
(
[Class3] => HTML教程
[class4] => mysql
)
------------------------------------------------------------------------------
array_diff_assoc();返回在其他数组不存在的键名=>键值对,返回值为关联数组,可以指定多个参数
示例程序8
$arr1=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
$arr2=array("url"=>"houdunwang","class1"=>"DIV教程");
dump(array_diff_key($arr1,$arr2));
输出结果
Array
(
[class2] => DIV教程
[Class3] => HTML教程
[class4] => mysql
)
----------------------------------
示例程序9
$arr1=array("url"=>"houdunwang","class1"=>"PHP视频教程","class2"=>"DIV教程","Class3"=>"HTML教程","class4"=>"mysql");
$arr2=array("url"=>"houdunwang","class1"=>"DIV教程","class2"=>"HTML教程");
dump(array_diff_assoc($arr1,$arr2));
输出结果
Array
(
[class1] => PHP视频教程
[class2] => DIV教程
[Class3] => HTML教程
[class4] => mysql
)
array_diff_ukey(数组1,数组2,数组3,...,自定义的回调函数);返回一个数组在另一个数组中不存在的键名所对应的值,返回值类型为数组
该函数共有多个参数,且这些参数都是必须存在的,自定义函数名要用引号括起来
示例程序1
function dump($arr){
echo '<pre>';
print_r($arr);
}
$arr1=array("姓名"=>"李海","年龄"=>"29","身高"=>"176cm");
$arr2=array("姓名"=>"李海","籍贯"=>"江苏","性别"=>"女");
$arr0=array_diff_ukey($arr1,$arr2,'a');
function a($k1,$k2){
if($k1===$k2){
return 0;
}elseif($k1>$k2){
return 1;
}else{
return -1;
}
}
dump($arr0);
输出结果
Array
(
[年龄] => 29
[身高] => 176cm
)
------------------------------------------------------------------------------------
示例程序2
$arr1=array("姓名"=>"李海","年龄"=>"29","身高"=>"176cm");
$arr2=array("姓名"=>"李海","籍贯"=>"江苏","性别"=>"女");
$arr3=array("姓名"=>"李海","年龄"=>"34","性别"=>"女");
$arr0=array_diff_ukey($arr1,$arr2,$arr3,'a');
function a($k1,$k2){
if($k1===$k2){
return 0;
}elseif($k1>$k2){
return 1;
}else{
return -1;
}
}
dump($arr0);
输出结果
Array
(
[身高] => 176cm
)
---------------------------------------------------------------------------------
array_diff_uassoc(数组1,数组2,数组3,...,自定义的回调函数),通过自定义回调函数,返回一个数组在另一个数组中不存在的键名键值对所对应的值,返回值类型为数组
示例程序3
$arr1=array("姓名"=>"李海","年龄"=>"29","身高"=>"176cm");
$arr2=array("姓名"=>"李海","籍贯"=>"江苏","性别"=>"女");
$arr3=array("姓名"=>"李海","年龄"=>"34","性别"=>"女");
$arr0=array_diff_uassoc($arr1,$arr2,$arr3,'a');
function a($k1,$k2){
if($k1===$k2){
return 0;
}elseif($k1>$k2){
return 1;
}else{
return -1;
}
}
dump($arr0);
输出结果
Array
(
[年龄] => 29
[身高] => 176cm
)
-----------------------------------------------------------------------------------
数组交集处理函数
array_intersect(数组1,数组2,数组3,...);在两个或多个数组中返回键值都存在的元素,第一个数组为被比较的数组,其他数组都是用来
和数组1进行比较的
array_intersect_key(数组1,数组2,数组3,...);在两个或多个数组中返回键名都存在的元素,第一个数组为被比较的数组,其他数组都是用来
和数组1进行比较的.
array_intersect_assoc(数组1,数组2,数组3,...);在两个或多个数组中返回键名键值对都存在的元素,第一个数组为被比较的数组,其他数组都是用来
和数组1进行比较的.
array_intersect_ukey(数组1,数组2,数组3,...,自定义的回调函数);通过回调函数,在两个或多个数组中返回键名都存在的元素,第一个数组为被比较的数组,其他数组都是用来
和数组1进行比较的.
array_intersect_uassoc(数组1,数组2,数组3,...,自定义的回调函数);通过回调函数,在两个或多个数组中返回键名键值对都存在的元素,第一个数组为被比较的数组,其他数组都是用来和数组1进行比较的.
array_udiff();通过回调函数,取得两数组的差集,返回的新数组中的所有元素都是数组1的子集,是数组1中和其他数组不同的元素的差集,只比较键值,不比较键名
示例程序
function dump($arr)
{
echo '<pre>';
print_r($arr);
}
$array1=array("a"=>"a","b"=>"b","c"=>"c1");
$array2=array("a"=>"a","b"=>"b","c"=>"c","d"=>"d");
function func($v1,$v2){
if($v1===$v2){
return 0;
}elseif($v1>$v2){
return 1;
}else{
return -1;
}
}
dump(array_udiff($array1,$array2,'func'));
输出结果
Array
(
[c] => c1
)
----------------------------------------------------------------------------------
array_udiff_assoc();通过回调函数,取得两数组的差集,返回的新数组中的所有元素都是数组1的子集,是数组1中和其他数组不同的元素的差集,同时比较键值和键名
-------------------------------------------------------------------------------------------
array_udiff_uassoc(数组1,数组2,...,回调函数1,回调函数2)回调函数要用引号括起来
----------------------------------------------------------------------------------------------
以上是对函数交集的函数
array_uintersect();通过回调函数,得到多个数组中键值的交集
array_uintersect_assoc();通过回调函数,得到多个数组中键值的交集,键名也参与比较
array_uintersect_uassoc();通过2个回调函数,对多个数组的键名和键值进行比较,得到多个数组中键值的交集
array_unique去除数组元素中的重复项,返回的是一个新的数组
示例程序
function dump($arr){
echo '<pre>';
print_r($arr);
}
$arr1=array("白浅","夜华","白真","墨渊","折颜","白浅");
dump($arr1);
dump(array_unique($arr1));
输出结果
Array
(
[0] => 白浅
[1] => 夜华
[2] => 白真
[3] => 墨渊
[4] => 折颜
[5] => 白浅
)
Array
(
[0] => 白浅
[1] => 夜华
[2] => 白真
[3] => 墨渊
[4] => 折颜
----------------------------------------------------------------------------------------------
通过练习我们发现,该函数在去除重复项时只要键名相同的即认为是重复项,如果一个关联数组中存在键名相同,键值不同的元素,则输出
数组时,后面的键值对覆盖前面的键值对
示例程序
$arr1=array("苹果"=>"2个","梨"=>"4个","香蕉"=>"5个","苹果"=>"1个");
dump(array_unique($arr1));
输出结果
Array
(
[苹果] => 1个
[梨] => 4个
[香蕉] => 5个
)
----------------------------------------------------------------------------------------------
在数组元素的后面再插入一个新的元素格式
$arr1=array("苹果"=>"2个","梨"=>"4个","香蕉"=>"5个");
$arr1["甘蔗"]="1根";
如果不想从最后开始添加想从数组开头添加
则利用array_unshift(数组,待添加的元素);返回的是添加之后数组元素的个数,该函数是作用于原数组
-------------------------------------------------------------------------------------------------
array_shift删除数组第一个元素,并且返回删除成功的元素的值,如果删除失败返回null.
array_pop:"出栈"移除数组最后一个元素,出栈成功返回删除元素的值,出栈失败返回null
示例程序
$arr1=array("苹果","梨","香蕉","凤梨","水蜜桃");
var_dump(array_pop($arr1));
dump($arr1);
输出结果
string '水蜜桃' (length=6)
Array
(
[0] => 苹果
[1] => 梨
[2] => 香蕉
[3] => 凤梨
)
---------------------------------------------------------------------------------------------------
unset(元素)删除数组指定索引位置的元素
示例程序
$arr1=array("苹果","梨","香蕉","凤梨","水蜜桃");
unset($arr1[2]);
dump($arr1);
输出结果
Array
(
[0] => 苹果
[1] => 梨
[3] => 凤梨
[4] => 水蜜桃
)
-----------------------------------------------------------------------------------------------------------
array_keys();将数组的键名作为元素生成一个新的数组
array_values();将数组的键值以数组的形式返回
示例程序
$arr=array("uname"=>"李飞","age"=>"29","籍贯"=>"江苏");
dump(array_keys($arr));
dump(array_values($arr));
输出结果
Array
(
[0] => uname
[1] => age
[2] => 籍贯
)
Array
(
[0] => 李飞
[1] => 29
[2] => 江苏
)
array_map(回调函数,传入的数组),可以通过回调函数一次性的对数组中的所有元素进行一定的操作
示例程序
$arr=array(12,45,789,156,43,71,64);
function func_map($v){
if($v>100)
{
return $v;
}
}
$arr_new=array_map('func_map',$arr);
var_dump($arr_new);
dump($arr_new);
输出结果
array (size=7)
0 => null
1 => null
2 => int 789
3 => int 156
4 => null
5 => null
6 => null
Array
(
[0] =>
[1] =>
[2] => 789
[3] => 156
[4] =>
[5] =>
[6] =>
)
----------------------------------------------------------------------------
array_walk();将数组中的每个元素都经过回调函数的处理.处理成功
返回TRUE,处理失败返回FALSE,该函数至多需要三个参数.只针对一位数组
array_walk_recursive();递归的操作数组,是数组中的元素应用回调函数
PHP学习笔记(三)相关推荐
- J2EE学习笔记三:EJB基础概念和知识 收藏
J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...
- tensorflow学习笔记(三十二):conv2d_transpose (解卷积)
tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...
- Ethernet/IP 学习笔记三
Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...
- iView学习笔记(三):表格搜索,过滤及隐藏列操作
iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...
- 吴恩达《机器学习》学习笔记三——多变量线性回归
吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...
- Python基础学习笔记三
Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...
- Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装
扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- ROS学习笔记三:创建ROS软件包
,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...
- Python学习笔记三之编程练习:循环、迭代器与函数
Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...
最新文章
- Ubuntu13.04下使用dnw
- IT技术人生路之我的大学--我技术方向的转变
- Django-Ajax进阶
- Shell echo-使用echo实现更复杂的输出格式控制
- 转【查看oracle数据库的连接数以及用户 】
- 【渝粤教育】21秋期末考试市场调查与预测10243k2
- java jsp session_JSP中Session的使用
- 局域网邮件服务器搭建地址薄更新,搭建局域网邮件服务器
- 智慧树工业机器人测试答案_智慧树_工业机器人技术基础_答案章节单元测试答案...
- 基于Verilog实现2ASK调制
- 一键打开常用软件(bat/vbs)
- 无人车传感器 IMU 深入剖析
- 切换linux默认桌面,Debian默认桌面再次切换到Gnome
- 前端DES加密、base64编码,后端DES解密、base64解码
- 网络爬虫讲解(附java实现的实例)
- 保姆级 IGV 基因组浏览器使用指南(图文详解)
- ffmpeg截取视频片段(傻瓜教程)
- R语言 Matrix的使用
- 解决git拉取代码时报:Auto packing the repository in background for optimum performance
- linux 命令中的大于号、小于号的作用
热门文章
- mysql数据库事务类型
- 积分兑换中心 html模板,积分兑换页.html
- java之app自动化(解决搜狗输入法无法进行隐藏的问题)
- Calico网络选项选择
- 手机号码、身份证号验证
- Win10提示"由于启动计算机时出现了页面文件配置问题"解决方法
- 按揭房贷款需要注意哪些事项
- 239_macroexp--cons功能以及实现分析
- 深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)
- Win10 环境下安装Ubuntu 18.04过程记录