PHP梳理之array
梳理 php 关于
array
的小知识,以后数组函数的应用尽量看这一篇文章
创建
- 以下是正常的创建
1 |
|
复制
其他方式创建
range
创建一个纯数字的数组explode
,str_split
字符串分割成数组array_map
,array_filter
等数组函数,输入数组,返回新数组
1 |
|
复制
常用函数
我们先定义一个数组方便我们操作
1 |
|
复制
很多场景下需要用到的函数
二维数组取出某一列(键值对)
array_column
提供了很完美的解决方法。
- 我们可以在此方法的第二个参数传入要取出的列名,即可以拿到对应的列。
- 我们还可传入第三个参数,也是一个列名,作为键名
- 我们传入了第三个参数时,甚至可以把第二个参数设为
null
,这样我们取出了所有列
注意:传入的键名中,如果有重复的键的话,去后者,也就是说会有覆盖的情况所以谨慎行事
1 |
|
复制
数组去重
如上文中的
$userIds
可以用array_unique
去重。
1 |
|
复制
数组索引自然化
如上文中的
$userIdDict
虽然去重了,但是依然保留了原有的键,我们希望键名是数字索引且依次递增的。这时候可以用上array_value
1 |
|
复制
注意:
array_values
并不是改变原数组的索引,而是返回了所有数组的值,所以我们需要一个行的数组来接收它
数组获取键
上文中,我们拿到了不重复的
$userIdDict
,我们还可以通过array_keys
来获取相同的结果
array_key
甚至还可以用来搜索键。
1 |
|
复制
数组判断
- 用
array_key_exists
来判断数组的键是否存在,也可以用isset
- 用
in_array
来判断某个值是否在数组中 - 用
array_search
来查询某个值的键
1 |
|
复制
数组过滤
- 用
array_filter
过滤数组
1 |
|
复制
数组合并,截取,替换
- 用
array_merge
合并数组 - 用
array_slice
截取数组 - 用
array_splice
替换(移除)数组的部分单元 - 用
array_replace
逐个替换数组单元
1 |
|
复制
数组入栈,出栈
- 用
array_push
在数组末尾插入(一|多)个单元 - 用
array_pop
弹出数组末尾一个单元 - 用
array_unshift
在数组开头插入(一|多)个单元 - 用
array_shift
弹出数组开头一个单元
1 |
|
复制
数组的地址变动
- 用
current
获取当前单元 - 用
next
切换数组地址为数组下一个单元 - 用
prev
切换数组地址为数组上一个单元 - 用
end
切换数组地址为数组末尾单元 - 用
reset
切换数组地址为数组开头单元
1 |
|
复制
数组的解构和展开
- 用
list
来展开数组(仅限数字索引数组)
1 |
|
复制
题外话,一个面试题:$a = 1, $b = 2; 用一句话交换两个变量的值,即:$a = 2, $b = 1;
解答:
1 | list($a, $b) = [$b, $a]; |
复制
- 用
extract
来解构数组
使用此函数需要保证局部上下文解构变量未命名
1 |
|
复制
- 用
compact
来创建键值对数组
1 |
|
复制
数组统计类函数
array_sum
求和min
取出最小值max
取出最大值count
数组长度
1 |
|
复制
To be continue