袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

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

打赏