八.函数

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]."&nbsp;&nbsp;所学课程是:".$arr[1]."&nbsp;&nbsp;年龄是:".$arr[2]."&nbsp;&nbsp;

生日是:".$arr[3];

输出结果:

该学员的姓名是:李海  所学课程是:PHP课程  年龄是:29   生日是:1982-05-28

-------------------------------------------------------------------------

示例程序2(关联数组)类似于以前学习的键值对

$arr=array("uname"=>"李海","uclass"=>"PHP课程","uage"=>"29","ubirth"=>"1982-05-28");

echo "该学员的姓名是:".$arr['uname']."&nbsp;&nbsp;所学课程是:".$arr['uclass']."&nbsp;&nbsp;年龄是:".$arr['uage']."&nbsp;&nbsp;生日是:".$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']."&nbsp;&nbsp;所学课程是:".$arr[0]['uclass']."&nbsp;&nbsp;年龄是:".$arr[0]['uage']."&nbsp;&nbsp;生日是:".$arr[0]['ubirth'];

echo '<br>';

echo "学员1的姓名是:".$arr[1]['uname']."&nbsp;&nbsp;所学课程是:".$arr[1]['uclass']."&nbsp;&nbsp;年龄是

:".$arr[1]['uage']."&nbsp;&nbsp;生日是:".$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学习笔记(三)相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. Ubuntu13.04下使用dnw
  2. IT技术人生路之我的大学--我技术方向的转变
  3. Django-Ajax进阶
  4. Shell echo-使用echo实现更复杂的输出格式控制
  5. 转【查看oracle数据库的连接数以及用户 】
  6. 【渝粤教育】21秋期末考试市场调查与预测10243k2
  7. java jsp session_JSP中Session的使用
  8. 局域网邮件服务器搭建地址薄更新,搭建局域网邮件服务器
  9. 智慧树工业机器人测试答案_智慧树_工业机器人技术基础_答案章节单元测试答案...
  10. 基于Verilog实现2ASK调制
  11. 一键打开常用软件(bat/vbs)
  12. 无人车传感器 IMU 深入剖析
  13. 切换linux默认桌面,Debian默认桌面再次切换到Gnome
  14. 前端DES加密、base64编码,后端DES解密、base64解码
  15. 网络爬虫讲解(附java实现的实例)
  16. 保姆级 IGV 基因组浏览器使用指南(图文详解)
  17. ffmpeg截取视频片段(傻瓜教程)
  18. R语言 Matrix的使用
  19. 解决git拉取代码时报:Auto packing the repository in background for optimum performance
  20. linux 命令中的大于号、小于号的作用

热门文章

  1. mysql数据库事务类型
  2. 积分兑换中心 html模板,积分兑换页.html
  3. java之app自动化(解决搜狗输入法无法进行隐藏的问题)
  4. Calico网络选项选择
  5. 手机号码、身份证号验证
  6. Win10提示"由于启动计算机时出现了页面文件配置问题"解决方法
  7. 按揭房贷款需要注意哪些事项
  8. 239_macroexp--cons功能以及实现分析
  9. 深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)
  10. Win10 环境下安装Ubuntu 18.04过程记录