数组函数
- 生成指定范围的数组 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 删除元素var_dump($arr);
$res=array_splice($arr,0,2);
var_dump($res);
var_dump($arr);
- 更新
array_splice 更新 从第一个开始 更新2个var_dump($arr);
$res=array_splice($arr,0,2,['c','d']);
var_dump($res);
var_dump($arr);
- 将一个数组按数量分割成多个 array_chunk ( 数组 , 每个数组的单元数目 , 是否使用原来的键名) : 返回一个新的数组
$arrTmp=['a','b',3,4,7,8];
$arrTmp1=array_chunk($arrTmp,2);
var_dump($arrTmp1);
- 合并数组
合并一个或多个数组 array_merge()返回一个新的数组$arrTmp=['a','b',3,4,7,8];
$arrtmp=['西安','陕西'];
$arrn=array_merge($arrTmp,$arrtmp);
var_dump($arrn);
递归地合并一个或多个数组 array_merge_recursive(数组…)如果数组具有相同的数值键名,后一个值将不会覆盖原来的值,而是附加到后面$arrTmp=[
'city'=>['陕西','关中','陕南'],
'num'=>[1,2,3,4,5],
];
$arrtmp=[
'city'=>['陕西','西安','咸阳'],
'add'=>['029','610','020'],
];
$arrn=array_merge_recursive($arrTmp,$arrtmp);
var_dump($arrn);
创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 array_combine(key,value)$arr10=['id','name'];
$arr11=[1,'admin'];
$arr=array_combine($arr10,$arr11);
var_dump($arr);
计算数组的交集 array_intersect (数组…) : array
$input=[1,2,3,4,5];
$input1=[3,5,6,7,8];
var_dump(array_intersect($input,$input1));
从数组中取出一段 array_slice(数组,偏移量,数量)
$input=[1,2,3,4,5];
//从第二个开始取2个
$input1=array_slice($input,1,2);
var_dump($input1);
- 从数组中随机取出一个或多个随机键 array_rand (数组 , 数量 )
$input=[1,2,'a','b','c'];
$input1=array_rand($input,1);
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 里的值。$input=[1,2,3,5,6];
$input1=[5,6,7,8,9];
$input2=[5,6,9,10,11];
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);
- sort (array) : bool 由低到高
- 返回数组中指定的一列 array_column(数组,字段)
$arr4=array_column($arrs,'id'); var_dump($arr4);
- 数组中的最大值 max(数组)
$max=max($arr4); var_dump($max);
- 数组漫游/指针操作
key();current() 查看当前成员的键和值
next();prev() 指针的前移和后退
end(),reset() 快速移动到尾部和头部$arr1=range(10,100,10);
printf('key=>%s,value=>%s <br>',key($arr1),current($arr1));
next($arr1);
printf(' 前移key=>%s,value=>%s <br>',key($arr1),current($arr1));
next($arr1);
printf('前移 key=>%s,value=>%s <br>',key($arr1),current($arr1));
prev($arr1);
printf('后退key=>%s,value=>%s <br>',key($arr1),current($arr1));
end($arr1);
printf('尾部key=>%s,value=>%s <br>',key($arr1),current($arr1));
reset($arr1);
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(值,数组,是否是严格模式)只返回第一次匹配到的索引;
var_dump($arr3);
$index=array_search(11,$arr3);
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
$name='西安';
array_walk($city,function(&$value,$key,$data) use ($name){
if($value===$name) $value.=$data;
},',这是省会');
var_dump($city);
- array_map(回调函数,数组1,数组2….)同时对多个数字执行同一个回调函数 通常用于处理但数组上
//(按索引相加 $a[0]+$b[0]+$c[0], $a[1]+$b[1]+$c[1]...)
$arrs=array_map(function($a,$b,$c){
return $a+$b+$c;
},[1,2,3],[4,5,6],[7,28,9]);
var_dump($arrs);
过滤 array_filter(数组,回调函数)
// 过滤大于50的数
$arr=array_filter([7,12,14,55,33,66,77,231,2,1],function($value){
return $value > 50;
});
var_dump($arr);
array_reduce(数组,回调函数);将数组成员迭代处理成单一成员返回
$res=array_reduce([1,2,3,4],function($prev,$curr){
return $prev.=$curr.',';
});
//rtrim()去掉右边的,
echo rtrim($res,','),'<br>';
echo implode(',',[1,2,3,4]);
- 将数组成员解构到一组变量中 list()
$arrs=[
['id'=>1,'name'=>'admin'],
['id'=>2,'name'=>'admin1'],
['id'=>3,'name'=>'admin2'],
];
print_r($arrs);
foreach($arrs as list('id'=>$id,'name'=>$name)){
echo 'id='.$id,'<br>','name='.$name,'<br>';
};