PHP中常用的操作数组函数
浏览量:227
从数据的角度看,后台语言都是在操作数据的各种变化,而数组是堆数据最重要的呈现方式,所以我们需要记住一定的操作数组的函数,而使用内置提供的函数目的,就在于避免重复造轮子,提高开发的效率。
下面列举了一些我经常在项目中用到的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 );


感谢支持与鼓励~