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 );

作者:赵锐庆

posted @ 2020-02-25 19:33  锐庆  阅读(752)  评论(0)    收藏  举报