PHP中常用的操作数组函数
PHP常用操作数组的函数
从数据的角度看,后台语言都是在操作数据的各种变化,而数组是堆数据最重要的呈现方式,所以我们需要记住一定的操作数组的函数,而使用内置提供的函数目的,就在于避免重复造轮子,提高开发的效率。
下面列举了一些我经常在项目中用到的php函数,希望能有所帮助!
| 分类 | 函数 | 概要 |
|---|---|---|
| 变量和数组的转换 | compact() | 将变量整合成数组 |
| extract() | 将数组中的每个值以键的名分解成变量 | |
| 变量和字符串转换 | explode() | 以某个子串分解字符串成数组 |
| implode() | 将一维数组根据某个符号拼接成字符串 | |
| 数组与数组之间关系 | array_merge() | 合并/并集 |
| array_diff() | 差集 | |
| array_intersect() | 交集 | |
| 数组值的操作 | array_pop() | 删除(弹出)数组最后一个值 |
| array_push() | 向数组中追加一个值 | |
| 判断数组是否存在数组中 | in_array() | 判断一个值是否存在数组中 |
| array_key_exists() | 判断键是否存在数组中 | |
| 数组去重 | array_unique() | 数组去重 |
| 获取二维数组中的值的集合 | array_column() | 获取二维数组中的值的集合 |
| 提取数组的键与值 | array_values | 提取数组的值构成一维数组 |
| array_keys | 提取数组的键构成一维数组 | |
| 返回数组中的随机的键 | array_rand() | 返回数组中的随机的键 |
| 返回数组中值的数量 | count() | 返回数组中值的和 |
| 查询数组中的值 | array_search() | 查询数组中的值是否存在/in_array()有点相似 |
| 排序 | sort() | 排序有很多种,按键或值升降序,自己google去,不讲了 |
| array_multisort() | 多维数组排序 | |
| 分割数组 | array_chunk() | |
| 还有数组计算的函数..补长的函数 | 省略.. |
一、变量与数组的转换
compact() 将变量以变量名的方式组装成数组
$bianliang1 = '赵';
$bianliang2 = '锐';
$arr = compact('bianliang1','bianliang2');
//返回的结果为
['bianliang1'=>'赵','bianliang2'=>'锐'];
//应用场景1
在TP、Laravel中将查询出来的数据向末班引擎中添加的时候会用到..
extract() 将数组解析成变量/ 和compact是反转的
$arr = ['bianliang1'=>'赵','bianliang2'=>'锐'];
extract($arr);
//使用-输出bianliang1(相当于你声明了一次变量,有点向ES6解构赋值的意思)
echo $bianliang1;
二、变量和字符串的转换
$str = '热爱,喜欢,兴奋';
$arr = explode(',',$str);//表示以字符串中的逗号分隔成数组
//结果为
['热爱','喜欢','兴奋'];
如果解析的字符串是个空字符串,结果是一个数组有一个索引为0的值,值为空;并不是个空数组;
$arr = ['热爱','喜欢','兴奋'];
//将数组解析成字符串
$str = implode(',',$arr);
//得到的结果为
'热爱,喜欢,兴奋'
三、数组和数组之间关系
并集关系
$arr1 = ['赵','上','的'];
$arr2 = ['张','赵'];
//将2个数组合并
$arr_mer = array_merge($arr1,$arr2);
//结果为
['赵','上','的','张','赵']
差集关系
$arr1 = ['赵','上','的'];
$arr2 = ['张','赵'];
//获取第一个数组在第二个数组中的差集部分,就是没有的部分
$arr_dif = array_diff($arr1,$arr2);
//结果为
['上','的']
交集关系
$arr1 = ['赵','上','的'];
$arr2 = ['张','赵'];
//获取2个数组相交集的部分数组
$arr_inter = array_intersect($arr1,$arr2);
//结果为
['赵']
四、数组值的操作
删除数组最后一个值
$arr = ['赵','上','的'];
array_pop($arr);//删除数组最后一个值
//结果为
['赵','上']
向数组中追加一个值
$arr = ['赵','上','的'];
array_push($arr,'王');//支持多个参数,比如第三个参数 仍然会被追加到数组中去
//得到结果为: (array_push不需要接收,直接引用操作原数组)
echo $arr;
['赵','上','的','王'];
五、判断值是否存在数组中
判断值是否存在数组中
$arr = ['name'=>'赵锐庆','age'=>18,'class'=>'大班'];
$bol = in_array('赵锐庆',$arr);//如果存在返回true 否则返回false
//得到结果为true
判断键是否存在数组中
$arr = ['name'=>'赵锐庆','age'=>18,'class'=>'大班'];
$bol = array_key_exists('name',$arr);//如果值存在返回true,否则返回false
//得到结果为true
六、数组去重
数组去重
$arr = ['赵','赵','锐'];
$arr_uni = array_unique($arr);//数组去重
//得到的结果为
['赵','锐']
七、获取二维数组中值的集合
$arr = [
['name'=>'赵锐庆','id'=>'one','school'=>'南理工'],
['name'=>'孙悟空','id'=>'two','school'=>'南理工'],
['name'=>'刘德华','id'=>'three','school'=>'南理工'],
['name'=>'朱德','id'=>'four','school'=>'南理工'],
];
//提取name为键的值构成一维数组
$arr_colu = array_column($arr,'name');
//得到结果
['赵锐庆','孙悟空','刘德华','朱德']
//提取那么为键的值切提取对应数组红的id值作为键构成一维键值数组
$arr_colu = array_column($arr,'name','id');
['one'=>'赵锐庆','two'=>'孙悟空','three'=>'刘德华','four'=>'朱德']
八、提取数组的键与值
获取数组的键
$arr = ['name'=>'赵锐庆','id'=>'one','school'=>'南理工'];
$arr_val = array_values($arr);//提取数组中的值
//得到的结果为
['赵锐庆','one','南理工'];
获取数组的值
$arr = ['name'=>'赵锐庆','id'=>'one','school'=>'南理工'];
$arr_key = array_keys($arr);//提取数组中键的集合
//得到结果为
['name','id','school'];
九、返回数组中值的和
返回数组中值的和
$arr = ['name'=>'赵锐庆','id'=>'one','school'=>'南理工'];
$number = count($arr);
//返回的结果
3
十、返回数组随机的键
$arr = ['name'=>'赵锐庆','id'=>'one','school'=>'南理工'];
$number = array_rand($arr);
//返回的结果
'id'
十一、搜索值是否存在数组中
$arr = ['name'=>'赵锐庆','id'=>'one','school'=>'南理工'];
$is = array_search('赵锐庆'=>$arr);
//返回的结果
'name'
十二、多维数组进行排序
/*
上面讲的数组排序都是指的一个整体数组,索引数组升序降序等等或者关联数组根据键值对的升序或者排序;
而这里将的排序是一个数组收到其他数组的影响进行排序;其实这种方式就如同对数据库的数据进行升降排序的道理是一致的;
*/
$guys = array(
array('name'=>'jake', 'score'=>80, 'grade' =>'A'),
array('name'=>'jina', 'score'=>70, 'grade'=>'A'),
array('name'=>'john', 'score'=>30, 'grade' =>'A'),
array('name'=>'sss', 'score'=>70, 'grade'=>'C'),
array('name'=>'ben', 'score'=>20, 'grade'=>'B')
);
//如上有一个数组,要求根据score字段升序,相同的情况下根据name字段排序;
$score = array_column($guys,”score”);
$score = array_column($guys,”name”);
Array_multisort($score,SORT_ASC,$name,SORT_DESC,$guys );
作者:赵锐庆

浙公网安备 33010602011771号