编程之路之php数组操作详解【文末有福利】

一、什么是数组?

数组是一种复合数据类型,是数据的集合。

数组中的数据称为元素,每个元素是由键和值组成的键值对。

二、数组分类

1、关联数组

数据是由键和值形式构成的数组,键和值有一定关系

$arr = array(‘dbhost’=>’localhost’, ‘dbuser’=>’root’, ‘dbpwd’=>’123456);

2、下标数组,索引数组

它的键只是表示元素的位置,它和数据没有太大的关联

下标默认是从0开始的

3、一维数组

数组中元素没有数组类型的数据

4、多维数组

数组中的元素有数组类型的数据

三、数组元素的遍历方法

使用专门用于的foreach循环结构可以很方便的遍历数组元素

在遍历数组时,它是使用指针来操作数组元素。

初始时,指针指向第一个元素,下一次循环开始前,指针向前移动,指向下一个元素

如果我们在foreach遍历时,增加元素

发现foreach并没有把新增加的元素遍历到!

  1. 实际上,foreach用来遍历的数组变量是一个原数组变量的拷贝!

  1. 关于$k 和 $v这两个变量实际上是一个临时的变量

它不是数组元素,每一次遍历,都会把当前元素的键和值赋给$k和$v

它也是键或 值的一个拷贝

 

 

采用引用方式时,将真正的修改原数组元素的值

 

注意:引用方式的问题

应该怎么办?

在使用引用方式的情况,退出foreach后要unset($v)

四、和数组指针有关的函数

Key()   获取当前元素的键的数据

Current()  获取当前元素的值

Next()    指针向后移动一次

Prev()     指针向前移动一次

End()    指针移动到最后一个元素

Reset()   指针移动到第一个元素

 

指针如果出界的情况

可以通过使用reset()或end()调整回去

 

五、利用each()来遍历数组

each() = key() + current() + next()

使用each时,当前元素返回4个值,两个是键,两个是值的内容

 

 

先可以使用一个叫list()的函数配合each()

配合这张图

六、COW(copy on write)写时复制

我们在讲变量时,传值赋值时,两个变量先是使用同一个数据容器。

当其中一个的值发生改变时,才会发生容器的复制或者叫重新分配。

我们使用一个函数memory_get_usag()

 

七、数组函数

1、统计函数

Count() 用于统计数组中元素的个数

可以给出函数的第二个参数,就可以使用递归统计的方式来计算元素个数

Count($arr, 是否递归方式,默认时是false)

正常统计是5个元素,递归方式是8个(统计完一维,又进行子数组进行统计)

Array_sum() 用于统计数组中元素的和

 

Array_product() 用于计算所有数组元素的乘积

2、创建数组

Array_fill(起始下标,元素数,元素的值)

 

Range() 建立一个指定范围数值的数组

还可以给出步进值,不写时默认是1

Array_combine() 把两个数组的元素合成一个数组,第一个参数数组的值作为键,第二个参数数组的值作为对应的值

3、变量和数组元素相互转换

Compact()  把变量通过其变量名加入到数组中

Extract() 把数组中的元素从数组中抽取出来,用它的键作为变量名,元素的值作为值

List() 把数组中的元素值赋给变量

如果中间不需要的元素可以加一个空的逗号,不给出变量名

4、判断

In_array() 判断给出的值是否和数组中某个元素的值相等

 

Array_key_exists() 判断给出变量值是否与数组元素中某个元素的键的值相等

判断函数经常用于程序中对传递参数的合法性进行比对(和配置参数)判断

5、键值操作

Array_keys() 可以把一个数组中元素的键返回组成一个新的数组

Array_valuse() 把数组元素的值返回组成一个新的数组

Array_flip() 交换数组元素的键和值的位置

注意:如果值有重复的,键值交换位置后,后面的覆盖前面的,元素会变少

键是不能重复的,值可以。

Shuffle() 打乱数组元素的顺序

Array_unique() 去除数组中重复的元素

6、数组和字符串相互转换

Implode() 把数组中元素用分隔符连接成一个字符串

Explode() 把字符串使用分隔符隔开的内容保留到数组中

这两个函数是互逆的

7、模拟栈操作

数据在栈区,就有几种行为方式

先进先出,先进后出,后进先出,后进后出

Array_push() 把数据压入数组的末尾

元素下标会依次增大

Array_unshift() 把数据压入数组的头部

Array_pop() 把数组中的数据从尾部去掉一个

我们模拟了一个后进行先出

Array_shift() 把数组中的数据从头部去掉一个

利用回调函数处理数据

Array_map() 将回调函数作用数组的元素对元素进行处理

一个特殊的使用方法:省略回调函数名,此时如果输入参数是两个数组,则会对两个数组进行简单的合并

我们也可以在回调函数处使用系统内置好的函数,参数也可以是多个

上面就是一个比较三个数组对应元素最大值的例子

Array_walk() 对数组中的每个元素应用用户编写的函数

注意:

回调函数接收的参数,前面是值,后面是键,值可以使用引用方式

 

8、排序

Sort() 对数组元素进行按值的从小到大的再排序

注意:下标会重新分配

那么,键值数组排序后是什么情况?

值会按顺序重新排列,但键将丢失,改成使用下标方式

Rsort() 根据数组元素的值进行从大到小重新排列

和sort()特征一样,只是值从大到小

Ksort() 根据元素的键进行从小到大的重新排序

Krsort() 根据元素的键进行从大到小的排序

特征同上

Asort() 对数组元素进行从小到大的重新排序,并保持下标不变

Arsort() 对数组元素进行从大到小的重新排序,并保持下标不变

特征和上面一样

Natsort() 对数组元素进行自然排序

Sort()实际是按字符从左到右依次比较其ascii码值来判断大小

Usort()  使用用户自定义的比较函数对数组中的值进行排序

排序结果

要点:比较的规则

正序时,等于返回0,小返回-1,大返回1

倒序时,等于返回0,小返回1,大返回-1

9、拆分合并

Array_slice() 从数组中取出一段

注意:数组元素下标是从0开始的,因此第二个参数代表元素位置

Array_chunk() 把数组分成多个小的数组

第二个参数用于表明分割后的子数组有几个元素

此函数还有第三个参数,用于表明是否分割后带着键,默认为false,不带键

Array_merge() 用于合并多个数组为一个大数组

注意:此函数可以接收多个数组类型的参数,如果有重复的数据,用第一个数组的元素

我们讲运算符,有一个数组运算符+,行为是不是和这个是一样的。

Array_rand() 随机给出数组元素

注意:结果给出的不是值!而是键!!!

增加第二个参数,会设置随机几个数据出来。默认是1个。

Array_intersect() 取多个数组的交集

Array_diff() 取两个数组元素中不同的数据

注意:如果不相同的元素具有相同的键,则值用左边数组的

我是小咖

决胜心法:上面所说皆可以在php官方手册上找到。

发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值