1.array_rand()从数组中随机取出一个或多个元素(返回值是:随机元素的键)$arr=['js','css',25,'php',30];
printf('
%s',print_r($arr,true));
//随机去2个元素
$res=array_rand($arr,2);
printf('
%s',print_r($res,true));
2.array_replace()使用后面数组元素相同 key 的值替换 array1 数组的值。//如果数组1 和 数组2/多个数组中,出现同一个键,那么数组1的值将被数组2/最后出现的数组替换。
$arr=['id'=>201,'name'=>'皮皮虾','age'=>20];
$arr1=['id'=>301];
//如果一个键存在于数组2/后面数组中,但是不存在数组1,则会在数组1中创建这个元素。
$arr2=['id'=>401,'QQ'=>'258'];
$res=array_replace($arr,$arr1,$arr2);
printf('
%s',print_r($arr,true));
printf('
%s',print_r($res,true));
3.array_intersect() 计算数组的交集$arr=[1,10,'php','css',25];
$arr1=[8,'js',25,'php'];
$res=array_intersect($arr,$arr1);
printf('
%s',print_r($res,true));
4.array_intersect_assoc()返回数组交集,键名也做比较$arr1=['id'=>102,'name'=>'苹果','money'=>100,'橘子'];
$arr2=['id'=>103,'name'=>'香蕉','money'=>100,'西瓜','橘子'];
printf('
%s
',print_r($arr1,true));
printf('
%s
',print_r($arr2,true));
$res=array_intersect_assoc($arr1,$arr2);
printf('
%s',print_r($res,true));
5.array_diff() 返回数组的差集$arr1=['id'=>102,'name'=>'苹果','money'=>100,'橘子','西瓜'];
$arr2=['id'=>103,'name'=>'香蕉','money'=>100,'西瓜'];
printf('数组1:
%s
',print_r($arr1,true));
printf('数组2:
%s
',print_r($arr2,true));
$res=array_diff($arr1,$arr2);
printf('数组1和2的差集:
%s',print_r($res,true));
6.array_diff_assoc() 返回数组差集,键名也做比较$arr1=['id'=>102,'name'=>'苹果','money'=>100,'橘子','西瓜'];
$arr2=['id'=>103,'name'=>'香蕉','money'=>100,'西瓜'];
printf('数组1:
%s
',print_r($arr1,true));
printf('数组2:
%s
',print_r($arr2,true));
$res=array_diff_assoc($arr1,$arr2);
printf('数组1和2的差集:
%s',print_r($res,true));
7.array_chunk() 将一个数组分割成多个子数组参数:array_chunk( $array, $size ,$preserve_keys)$array:需要分割的数组$size :分割为几个数组$preserve_keys :默认false,为true时保留数组中原来的键名$input_array=array('a','b','c','d','e');
$res=array_chunk($input_array,2);
printf('
%s',print_r($res,true));
echo'
';
$res=array_chunk($input_array,2,true);
printf('
%s',print_r($res,true));
8.array_key_exists() 检查数组里是否有指定的键名或索引参数:array_key_exists( $key, $array):bool返回值 :成功时返回true,失败时返回false。注意:array_key_exists()仅仅搜索第一维的键。多维数组里嵌套的键不会被搜索到。$arr=['id'=>102,'name'=>'小猪','like'=>null];
echo array_key_exists('name',$arr)?'true':'false';//返回true
echo'
';
// isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
echo isset($arr['like'])?'true':'false';//返回 false
echo'
';
echo array_key_exists('like',$arr)?'true':'false';//返回 true
9.in_array() 检查数组中是否存在某个值$arr=[102,'XiaoZhu','摄影','100'];
echo in_array(102,$arr)?'true':'false','
';//返回true
// 如果第三个参数为true 则 还会检查类型是否相同。
echo in_array(100,$arr)?'true':'false','
';//返回true
echo in_array(100,$arr,true)?'true':'false','
';// 返回false
//字符串,区分大小写
echo in_array('xiaoZhu',$arr)?'true':'false','
';//返回false
10array_search() 搜索指定的值,返回键名$arr=['blue','red','green','red'];
printf('
%s',print_r($arr,true));
// 搜索的值是字符串,则比较以区分大小写的方式进行。
echo $res=array_search('green',$arr),'
';//返回 2
// 搜索的值出现多次,则返回第一个匹配的键。
echo $res=array_search('red',$arr);//返回1
11.array_filter() 用回调函数过滤数组中的值,返回的是一个新数组语法:array_filter(数组,回调函数);将数组中的每个元素依次传入回调函数中,若回调函数返回/的是true,则该元素将会被保存在一个新的数组中,并且索引保持不变$arr=[5,8,10,15,14,11,6,24];
$res=array_filter($arr,function($var){
//获取数组中的偶数返回
return$var=(!($var%2));
});
printf('
%s',print_r($res,true));
12.array_map()定义:返回的是新数组,原数组不变。作用:是每次传入一个元素到回调函数内,把回调函数的返回值存入到新数组内,可以多个数组同时传入。新数组和原数组的数组长度应该一样。语法:array_map( func, array1,[array2…])$arr=['星期一','星期二','星期三','星期四','星期五','星期六','星期天'];
$arr1=['上班','上班','上班','休息','上班','休息','上班'];
// shuffle()随机打乱数组顺序
$res1=shuffle($arr1);
$arr=array_map(function($a,$b)
{
return''.'今天是:'.$a.'要'.$b.'了'.'';
},$arr,$arr1);
printf('
%s',print_r($arr,true));
13.array_slice()和array_splice()很相似。一个用于从数组中取值,可理解为查询。一个用于对数组进行增删改。
array_slice($array, $offset, $length, $preserve_key) 第一个表示数组,第二个参数表示从数组的索引开始取值,可以是负值,负值表示倒数几个元素。第三个参数表示取值长度,正值表示长度,负值表示到倒数几个元素(不包括该元素)。第四个参数表示保持键名不变(索引数组有用)。$arr=[101,'张三',15,'zs@163.cn','134***','摄影'];
//起始从索引2开始
printf('
%s',print_r(array_slice($arr,2),true));
$arr=[101,'张三',15,'zs@163.cn','134***','摄影'];
//起始从索引2开始,截止到索引-2结束(不包括索引-2的数据)
printf('
%s',print_r(array_slice($arr,2,-2),true));
array_splice($array, $offset, $length, $replace_arr).前三个参数与array_slice()意义一样。第四个参数表示替换的数组元素,如果数组元素只有一个值,可以用字符串代替。$arr=[101,'张三',15,'zs@163.cn','134***','摄影'];
printf('原数组元素:
%s
',print_r($arr,true));
//删除元素
$res=array_splice($arr,3,2);
printf('删除的元素:
%s',print_r($res,true));
//替换元素
$res=array_splice($arr,3,2,['zs@qq.cn','158***']);
printf('替换的元素:
%s',print_r($arr,true));
// $res= array_splice($arr, -4,-2,['zs@qq.cn']);
// printf('替换的元素:
%s',print_r($arr,true));
// 增加元素
$res=array_splice($arr,1,0,['php','js']);
printf('增加的元素:
%s',print_r($arr,true));
总结:对回调函数还是理解模糊,尤其array_reduce()和array_walk()还没弄明白。多回看下视频,理解后再补交吧。