php判断2个数组内容是否相同的数据类型,PHP数组

数组的基础知识

一、数组的概述

1.数组的本质是管理和操作一组变量,批量处理

2.数组是复合类型

3.数组中可以存储任意长度的数据,也可以存储任意类型的数据

4.PHP的数组可以完成其它语言数据结构的功能(链表,队列,栈,集合类)

5.数组中存有多个单元(单元在数组中称为元素),每个元素都是由下标(键)和值组成,在单独访问元素时都是通过下标(键)来进行的。

二、数组的分类

1.一维数组,二维数组,三维数组…多维数组(数组的数组)

2.PHP中有两种数组:

索引数组:下标(键)用顺序整数作为索引

关联数组:下标(键)用字符串作为索引

三、数组的多种声明方式

1.直接为数组元素赋值

索引数组声明的基本格式为

$array[0]="value";

1

$array[0]="value";

关联数组声明的基本格式为

$array["id"]="value";

1

$array["id"]="value";

如果不给出索引下标,就会从0开始顺序索引,如果给其中有一个或几个给出了下标,其后没给出下标的就会按其下标增1,如果后面重复了前面的下标,会重新进行赋值。混合声明时,关联数组和索引数组不相互影响

2.使用array()函数声明

基本格式为

$arr=array("value1","value2",...);

1

$arr=array("value1","value2",...);

这种方式默认声明为索引数组,如果为关联数组和索引数组指定下标,需使用”键=>值”的方式声明

$arr=array("key1"=>"value1","key2"=>"value2","key3"=>"value3",...);

1

$arr=array("key1"=>"value1","key2"=>"value2","key3"=>"value3",...);

声明二维数组只需在数组中嵌套数组即可,访问二维数组中的元素可通过添加两个下标,如$array[0][1]即为value2

$arr=array(

array("value1","value2","value3",...);

array("value4","value5","value6",...);

array("value7","value8","value9",...);

);

1

2

3

4

5

$arr=array(

array("value1","value2","value3",...);

array("value4","value5","value6",...);

array("value7","value8","value9",...);

);

3.使用其它的函数声明,如file()等

数组的遍历

一、使用for语句循环遍历数组

1.其它语言常用(只有这一种方式)

2.PHP中这不是首选方式

3.此类遍历要求必须是索引数组,而且下标还必须是连续的(这样下标不连续的数组及关联数组遍历时都会出现问题)

for($i=0; $i

echo "\$arr[{$i}]=>".$arr[$i]."
";

}

1

2

3

for($i=0;$i

echo"\$arr[{$i}]=>".$arr[$i]."
";

}

二、使用foreach语句循环遍历数组

1.循环次数由数组元素的个数决定

2.每一次循环都会将数组中的元素分别赋值给as后的变量

foreach($arr as $var){ //$var为自定义变量

echo $var."
";

}

1

2

3

foreach($arras$var){//$var为自定义变量

echo$var."
";

}

还有第二组使用方法

foreach($arr as $key=>$var){ //$key,$var为自定义变量

echo $key."=>".$var."
";

}

1

2

3

foreach($arras$key=>$var){//$key,$var为自定义变量

echo$key."=>".$var."
";

}

三、使用while() list() each 组合循环遍历数组

each()函数需要一个数组作为参数,返加一个下标为0,1,key,value四个下标的数组,0和key下标是当前参数数组元素的键,1和value下标是当前参数数组元素的值。默认当前元素为第一个元素,每执行一次后就会将当前元素向后移动,如果到最后一个元素再执行此函数,则返回false。

while($temp=each($arr)){

echo $temp[0]."=>".$temp[1]."
";

//或echo $temp["key"]."=>".$temp["value"]."
";

}

1

2

3

4

while($temp=each($arr)){

echo$temp[0]."=>".$temp[1]."
";

//或echo $temp["key"]."=>".$temp["value"]."
";

}

list()函数需要将一个数组赋值给这个函数如list()=array(),数组中元素需要和list()函数中的参数个数相同,数组中的每个元素值会赋值给list()中的每个参数,list()函数将每个参数转为变量。注意list只能接收索引数组,按索引下标的顺序

list($var1, $var2, $var3...)=array("value1","value2","value3"...);

//只用某个值时可空出对应项,但应一一对应,如list(,,$var3...)

echo $var1."
";

echo $var2."
";

echo $var3."
";

1

2

3

4

5

list($var1,$var2,$var3...)=array("value1","value2","value3"...);

//只用某个值时可空出对应项,但应一一对应,如list(,,$var3...)

echo$var1."
";

echo$var2."
";

echo$var3."
";

三者组合使用

while(list($key,$value)=each($arr)){

echo $key."=>".$value."
";

}

1

2

3

while(list($key,$value)=each($arr)){

echo$key."=>".$value."
";

}

使用这种方法无法连续遍历数组,因为each()函数走到最后一个参数返回false。可使用数组的内部指针控制函数,如next(); prev(); reset(); end(); current();来进行多次遍历等操作。

预定义数组

通常也称为自动全局变量(超全局数组)

1.包含了来自WEB服务器,客户端、运行环境和用户输入的数据相关的数组

2.这些数据比较特别,在全局范围内自动生效,

3.用户不能自定义这些数组,但这些数组在使用时与自定义数组相同

系统默认的超级全局数组有

$_GET          经由URL请求提交至脚本的变量

$_POST        经由HTTP POST 方法提交到脚本的变量

$_REQUEST 可接收经由GET, POST和COOKIE机制提交到脚本的变量,因此该数组并不值得信任,尽量不去使用

$_FILES        经由HTTP POST 文件上传而提交至脚本, 主要用于文件处理

$_COOKIE

$_SESSION

$_ENV           执行环境提交至脚本的变量

$_SERVER     变量由WEB服务器设定的,或 直接和当前脚本的执行环境相关联

$GLOBALS     只要是当前脚本有效的变量都在这里,数组键名为全局

数组的相关函数

一 数组键/值操作有关的函数

1.  array_values()  返回数组所有的值

2.  array_keys()     返回数组所有的键名或指定值的键名

3.  in_array()          搜索指定数组中是否存在相应的值(二维数组或多维数组中可判断数组是否存在)

4. array_key_exists搜索指定的数组中是否存在相应的键名

5.array_flip            交换数组中的键和值,如果原数组中值重复,由于数组的键名不能重复,后面的会把前面的覆盖

6. array_reverse   返回一个单元顺序相反的数组

二、 统计数组元素的个数和唯一性的函数

1. count()或sizeof()         计算数组中元素的个数

2. array_count_values     统计数组中所有的值出现的次数,返回值为数组

3. array_unique               移除数组中重复的值

三、使用回调函数处理数组的函数

1. array_filter()         用回调函数过滤数组中的单元

2. array_walk()        对数组中的每个成员应用用户函数

3. array_map()         将回调函数作用在给定的数组单元上

数组的排序函数

sort(), rsort(),usort(),asort(),arsort(),uasort(),ksort(), krsort(), uksort(),natsort(),natcasesort(),array_multisort()

1. 简单的数组排序

sort()按值从小到大排序, rsort()按值从大到小排序(排序完会忽略键名,保存为索引数组)

2. 根据键名对数组排序

ksort() 按键名从小到大排序,krsort()按键名从大到小排序

3. 根据元素的值对数组排序

asort()按值从小到大排序, arsort()按值从大到小排序(保留键名与值的关系)

4. 根据“自然数排序”法对数组排序(自然认知的1,2,11,22排序计算机认为的排序却是1,11,2,22)

natsort() 自然数升序排序, natcasesort()不区分大小写的自然数升序排序

5. 根据用户自定义规则对数组排序

usort() uasort() uksort()

6.多维数组的排序

array_multisort

拆分、合并、分解、接合的数组函数

1. array_slice()          从数组中取出一段

2.array_splice()

3. array_combine()   通过合并两个数组来创建一个新的数组,其中一个数组的值作为键名,另一个数组的值作为值

4. array_merge()    合并数组

5. array_intersect() 计算数组的交集

6. array_diff()           返回两个数组不同的部分

数组与数据结构的函数

1. 使用数组实现堆栈(后进先出)

array_push()  压入栈,通常会使用更高效的直接赋值的方法取代($arr[]=”value”)

array_pop()    弹出栈

2. 使用队列(先进先出)

array_unshift() 压入数据

array_shift()     弹出队列数据

unset()           释放指定数据

其它与数据操作有关的函数

array_rand()    随机从数组取出一个或多个元素(下标/键名)

shuffle()           将数组随机排序

array_sum()    对数组进行求和运算

range()           创建并返回包含指定数组范围的数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值