Blogger Information
Blog 45
fans 0
comment 0
visits 34517
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php常用数组函数
咸鱼老爷
Original
1097 people have browsed it

数组函数

  • 生成指定范围的数组 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. };
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post