博客列表 >php常用数组函数

php常用数组函数

咸鱼老爷
咸鱼老爷原创
2021年03月13日 13:58:351106浏览

数组函数

  • 生成指定范围的数组 range(开始,结束,步长);
    $arr=range(1,10,2);var_dump($arr);
  • 添加
    从头部添加 array_unshift(数组,要添加的数据)
    array_unshift($arr,13,11);

    从尾部添加 array_push(源数组,要添加的数据)
    array_push($arr,11,13);

    array_splice 添加元素,只要将删除的数量设置为0传入第三个参数(要添加的元素);
    array_splice($arr,0,0,['a','b']);
  • 删除
    从头部删除 array_shift(数组)
    $arr=range(1,10,2); var_dump($arr); array_shift($arr); var_dump($arr);

    从尾部删除 array_pop(数组)
    $arr=range(1,10,2); var_dump($arr); array_pop($arr); var_dump($arr);

    array_splice 删除元素
    1. var_dump($arr);
    2. $res=array_splice($arr,0,2);
    3. var_dump($res);
    4. var_dump($arr);
  • 更新
    array_splice 更新 从第一个开始 更新2个
    1. var_dump($arr);
    2. $res=array_splice($arr,0,2,['c','d']);
    3. var_dump($res);
    4. var_dump($arr);
  • 将一个数组按数量分割成多个 array_chunk ( 数组 , 每个数组的单元数目 , 是否使用原来的键名) : 返回一个新的数组
    1. $arrTmp=['a','b',3,4,7,8];
    2. $arrTmp1=array_chunk($arrTmp,2);
    3. var_dump($arrTmp1);
  • 合并数组
    合并一个或多个数组 array_merge()返回一个新的数组
    1. $arrTmp=['a','b',3,4,7,8];
    2. $arrtmp=['西安','陕西'];
    3. $arrn=array_merge($arrTmp,$arrtmp);
    4. var_dump($arrn);

    递归地合并一个或多个数组 array_merge_recursive(数组…)如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面
    1. $arrTmp=[
    2. 'city'=>['陕西','关中','陕南'],
    3. 'num'=>[1,2,3,4,5],
    4. ];
    5. $arrtmp=[
    6. 'city'=>['陕西','西安','咸阳'],
    7. 'add'=>['029','610','020'],
    8. ];
    9. $arrn=array_merge_recursive($arrTmp,$arrtmp);
    10. var_dump($arrn);

    创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_combine(key,value)
    1. $arr10=['id','name'];
    2. $arr11=[1,'admin'];
    3. $arr=array_combine($arr10,$arr11);
    4. var_dump($arr);
  • 计算数组的交集 array_intersect (数组…) : array

    1. $input=[1,2,3,4,5];
    2. $input1=[3,5,6,7,8];
    3. var_dump(array_intersect($input,$input1));

  • 从数组中取出一段 array_slice(数组,偏移量,数量)

    1. $input=[1,2,3,4,5];
    2. //从第二个开始取2个
    3. $input1=array_slice($input,1,2);
    4. var_dump($input1);

  • 从数组中随机取出一个或多个随机键 array_rand (数组 , 数量 )
    1. $input=[1,2,'a','b','c'];
    2. $input1=array_rand($input,1);
    3. var_dump($input[$input1]);
  • 对数组中所有值求和 array_sum ( array $array ) : number
    $input=[1,2,3,4,5]; var_dump(array_sum($input));
  • 打乱数组 shuffle ( array &$array ) : bool
    $input=[1,2,3,4,5]; shuffle ( $input); var_dump($input);

    -计算数组的差集 array_diff ( array $array , array …$arrays ) : array
    对比 array 和其他一个或者多个数组,返回在 array 中但是不在其他 array 里的值。
    1. $input=[1,2,3,5,6];
    2. $input1=[5,6,7,8,9];
    3. $input2=[5,6,9,10,11];
    4. var_dump(array_diff($input , $input1,$input2));
  • 统计出数组里的所有元素的数量 count ( mixed $array_or_countable , int $mode = COUNT_NORMAL ) : int
    $input=[1,2,3,5,6]; var_dump(count($input));
  • 排序
    • sort (array) : bool 由低到高
      $input=[10,22,13,50,16]; sort($input); var_dump( $input);
    • asort — 对数组进行排序并保持索引关系 asort (array) : bool 由低到高
      $input=[10,22,13,50,16]; asort($input); var_dump( $input);
    • rsort(数组) 由高到底
      $input=[10,22,13,50,16]; rsort($input); var_dump( $input);
    • 按照键名由高到底 krsort(数组)
      $input=[10,22,13,50,16]; krsort($input); var_dump( $input);
  • 返回数组中指定的一列 array_column(数组,字段)
    $arr4=array_column($arrs,'id'); var_dump($arr4);
  • 数组中的最大值 max(数组)
    $max=max($arr4); var_dump($max);
  • 数组漫游/指针操作
    key();current() 查看当前成员的键和值
    next();prev() 指针的前移和后退
    end(),reset() 快速移动到尾部和头部
    1. $arr1=range(10,100,10);
    2. printf('key=>%s,value=>%s <br>',key($arr1),current($arr1));
    3. next($arr1);
    4. printf(' 前移key=>%s,value=>%s <br>',key($arr1),current($arr1));
    5. next($arr1);
    6. printf('前移 key=>%s,value=>%s <br>',key($arr1),current($arr1));
    7. prev($arr1);
    8. printf('后退key=>%s,value=>%s <br>',key($arr1),current($arr1));
    9. end($arr1);
    10. printf('尾部key=>%s,value=>%s <br>',key($arr1),current($arr1));
    11. reset($arr1);
    12. printf('头部key=>%s,value=>%s <br>',key($arr1),current($arr1));
  • 获取数组中部分的或所有的键名组成的数组 array_keys()
    $user=['id'=>1,'name'=>'user','age'=>18];$arr2=array_keys($user); var_dump($arr2);
  • 判断某个键是否存在 array_key_exists(key,arr).
    echo array_key_exists('id',$user)?'存在':'不存在','<br>';
  • 搜索指定的值,返回的是这个值对应的键 array_search(值,数组,是否是严格模式)只返回第一次匹配到的索引;
    1. var_dump($arr3);
    2. $index=array_search(11,$arr3);
    3. echo $index;
  • 判断某个值是否在数组中 in_array(值,数组,是否是严格模式):bool
    echo in_array(15,$arr3)?'存在':'不存在';
  • 获取所有值组成的数组 array_values($arr) 返回的新数组是一个经过整理的索引数组,索引是从0开始递增的正整数
    $arr=[4=>1,5=>0,0=>10]; var_dump(array_values($arr));

常用的数组回调函数

  • array_walk(数组,回调函数(&$value,$key,$data用户数据):回调处理数组中的每一个元素 返回值是bool
    1. $name='西安';
    2. array_walk($city,function(&$value,$key,$data) use ($name){
    3. if($value===$name) $value.=$data;
    4. },',这是省会');
    5. var_dump($city);
  • array_map(回调函数,数组1,数组2….)同时对多个数字执行同一个回调函数 通常用于处理但数组上
  1. //(按索引相加 $a[0]+$b[0]+$c[0], $a[1]+$b[1]+$c[1]...)
  2. $arrs=array_map(function($a,$b,$c){
  3. return $a+$b+$c;
  4. },[1,2,3],[4,5,6],[7,28,9]);
  5. var_dump($arrs);

  • 过滤 array_filter(数组,回调函数)

    1. // 过滤大于50的数
    2. $arr=array_filter([7,12,14,55,33,66,77,231,2,1],function($value){
    3. return $value > 50;
    4. });
    5. var_dump($arr);

  • array_reduce(数组,回调函数);将数组成员迭代处理成单一成员返回

    1. $res=array_reduce([1,2,3,4],function($prev,$curr){
    2. return $prev.=$curr.',';
    3. });
    4. //rtrim()去掉右边的,
    5. echo rtrim($res,','),'<br>';
    6. echo implode(',',[1,2,3,4]);

  • 将数组成员解构到一组变量中 list()
    1. $arrs=[
    2. ['id'=>1,'name'=>'admin'],
    3. ['id'=>2,'name'=>'admin1'],
    4. ['id'=>3,'name'=>'admin2'],
    5. ];
    6. print_r($arrs);
    7. foreach($arrs as list('id'=>$id,'name'=>$name)){
    8. echo 'id='.$id,'<br>','name='.$name,'<br>';
    9. };
上一条:php字符串函数下一条:SQL查询语句
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议