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