博客列表 >PHP数组函数

PHP数组函数

老陈
老陈原创
2020年04月27日 18:00:02859浏览

1.array_rand()从数组中随机取出一个或多个元素(返回值是:随机元素的键)

  1. $arr = ['js' , 'css' ,25 ,'php',30];
  2. printf('<pre>%s</pre>',print_r($arr ,true));
  3. //随机去2个元素
  4. $res = array_rand($arr,2);
  5. printf('<pre>%s</pre>',print_r($res,true));


2.array_replace()使用后面数组元素相同 key 的值替换 array1 数组的值。

  1. //如果数组1 和 数组2/多个数组中,出现同一个键,那么数组1的值将被数组2/最后出现的数组替换。
  2. $arr = ['id'=>201, 'name'=>'皮皮虾', 'age'=>20];
  3. $arr1 = [ 'id' => 301];
  4. //如果一个键存在于数组2/后面数组中,但是不存在数组1,则会在数组1中创建这个元素。
  5. $arr2 = [ 'id'=> 401,'QQ'=>'258'];
  6. $res = array_replace($arr, $arr1,$arr2);
  7. printf('<pre>%s</pre>',print_r($arr,true));
  8. printf('<pre>%s</pre>',print_r($res,true));


3.array_intersect() 计算数组的交集

  1. $arr = [1,10,'php','css',25];
  2. $arr1 = [8,'js',25,'php'];
  3. $res = array_intersect($arr ,$arr1);
  4. printf('<pre>%s</pre>',print_r($res,true));


4.array_intersect_assoc()返回数组交集,键名也做比较

  1. $arr1 = ['id' => 102, 'name' => '苹果', 'money' => 100, '橘子'];
  2. $arr2 = ['id' => 103, 'name' => '香蕉', 'money' => 100, '西瓜','橘子'];
  3. printf('<pre>%s</pre><hr>',print_r ($arr1,true));
  4. printf('<pre>%s</pre><hr>',print_r ($arr2,true));
  5. $res = array_intersect_assoc($arr1, $arr2);
  6. printf('<pre>%s</pre>',print_r($res,true));


5.array_diff() 返回数组的差集

  1. $arr1 = ['id' => 102, 'name' => '苹果', 'money' => 100, '橘子','西瓜'];
  2. $arr2 = ['id' => 103, 'name' => '香蕉', 'money' => 100, '西瓜'];
  3. printf('数组1:<pre>%s</pre><hr>',print_r ($arr1,true));
  4. printf('数组2:<pre>%s</pre><hr>',print_r ($arr2,true));
  5. $res = array_diff($arr1, $arr2);
  6. printf('数组1和2的差集:<pre>%s</pre>',print_r($res,true));


6.array_diff_assoc() 返回数组差集,键名也做比较

  1. $arr1 = ['id' => 102, 'name' => '苹果', 'money' => 100, '橘子','西瓜'];
  2. $arr2 = ['id' => 103, 'name' => '香蕉', 'money' => 100, '西瓜'];
  3. printf('数组1:<pre>%s</pre><hr>',print_r ($arr1,true));
  4. printf('数组2:<pre>%s</pre><hr>',print_r ($arr2,true));
  5. $res = array_diff_assoc($arr1, $arr2);
  6. printf('数组1和2的差集:<pre>%s</pre>',print_r($res,true));


7.array_chunk() 将一个数组分割成多个子数组

参数:array_chunk( $array, $size ,$preserve_keys)
$array:需要分割的数组
$size :分割为几个数组
$preserve_keys :默认false,为true时保留数组中原来的键名
  1. $input_array = array('a', 'b', 'c', 'd', 'e');
  2. $res = array_chunk($input_array, 2);
  3. printf('<pre>%s</pre>',print_r($res,true));
  4. echo '<hr>';
  5. $res = array_chunk($input_array, 2,true);
  6. printf('<pre>%s</pre>',print_r($res,true));


8.array_key_exists() 检查数组里是否有指定的键名或索引

参数:array_key_exists( $key, $array):bool
返回值 :成功时返回true,失败时返回false。
注意:array_key_exists()仅仅搜索第一维的键。多维数组里嵌套的键不会被搜索到。
  1. $arr = ['id'=> 102, 'name'=>'小猪','like'=>null];
  2. echo array_key_exists('name',$arr)? 'true' : 'false'; //返回true
  3. echo '<hr>';
  4. // isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会。
  5. echo isset($arr['like'])? 'true' : 'false'; //返回 false
  6. echo '<hr>';
  7. echo array_key_exists('like',$arr)? 'true' : 'false'; //返回 true

9.in_array() 检查数组中是否存在某个值

  1. $arr = [ 102, 'XiaoZhu','摄影','100'];
  2. echo in_array(102,$arr)?'true' : 'false','<br>'; //返回true
  3. // 如果第三个参数为true 则 还会检查类型是否相同。
  4. echo in_array(100,$arr)?'true' : 'false','<br>'; //返回true
  5. echo in_array(100,$arr,true)?'true' : 'false','<br>'; // 返回false
  6. //字符串,区分大小写
  7. echo in_array('xiaoZhu',$arr)?'true' : 'false','<br>'; //返回false

10array_search() 搜索指定的值,返回键名

  1. $arr = ['blue', 'red','green', 'red'];
  2. printf('<pre>%s</pre>',print_r($arr,true));
  3. // 搜索的值是字符串,则比较以区分大小写的方式进行。
  4. echo $res = array_search('green', $arr),'<br>'; //返回 2
  5. // 搜索的值出现多次,则返回第一个匹配的键。
  6. echo $res = array_search('red', $arr); //返回1

11.array_filter() 用回调函数过滤数组中的值,返回的是一个新数组

语法:array_filter(数组,回调函数);
将数组中的每个元素依次传入回调函数中,若回调函数返回/的是true,则该元素将会被保存在一个新的数组中,并且索引保持不变
  1. $arr=[5,8,10,15,14,11,6,24];
  2. $res= array_filter($arr, function ($var){
  3. //获取数组中的偶数返回
  4. return $var=(!($var%2) );
  5. });
  6. printf('<pre>%s</pre>',print_r( $res,true));


12.array_map()

定义:返回的是新数组,原数组不变。
作用:是每次传入一个元素到回调函数内,把回调函数的返回值存入到新数组内,可以多个数组同时传入。
新数组和原数组的数组长度应该一样。
语法:array_map( func, array1,[array2…])
  1. $arr = ['星期一','星期二','星期三','星期四','星期五','星期六','星期天'];
  2. $arr1 = ['上班','上班','上班','休息','上班','休息','上班'];
  3. // shuffle()随机打乱数组顺序
  4. $res1 = shuffle($arr1);
  5. $arr=array_map(function ($a,$b)
  6. {
  7. return '<font>'.'今天是:'.$a.'要'.$b.'了'.'</font>';
  8. },$arr,$arr1);
  9. printf('<pre>%s</pre>',print_r($arr,true));


13.array_slice()和array_splice()很相似。一个用于从数组中取值,可理解为查询。一个用于对数组进行增删改。

array_slice($array, $offset, $length, $preserve_key) 第一个表示数组,第二个参数表示从数组的索引开始取值,可以是负值,负值表示倒数几个元素。第三个参数表示取值长度,正值表示长度,负值表示到倒数几个元素(不包括该元素)。第四个参数表示保持键名不变(索引数组有用)。
  1. $arr =[101,'张三',15,'zs@163.cn','134***','摄影'];
  2. //起始从索引2开始
  3. printf('<pre>%s</pre>',print_r(array_slice($arr, 2),true));

  1. $arr =[101,'张三',15,'zs@163.cn','134***','摄影'];
  2. //起始从索引2开始,截止到索引-2结束(不包括索引-2的数据)
  3. printf('<pre>%s</pre>',print_r(array_slice($arr, 2,-2),true));

array_splice($array, $offset, $length, $replace_arr).前三个参数与array_slice()意义一样。第四个参数表示替换的数组元素,如果数组元素只有一个值,可以用字符串代替。
  1. $arr =[101,'张三',15,'zs@163.cn','134***','摄影'];
  2. printf('原数组元素:<pre>%s</pre><hr>',print_r($arr, true));
  3. //删除元素
  4. $res= array_splice($arr, 3,2);
  5. printf('删除的元素:<pre>%s</pre>',print_r($res,true));

  1. //替换元素
  2. $res= array_splice($arr, 3,2,['zs@qq.cn','158***']);
  3. printf('替换的元素:<pre>%s</pre>',print_r($arr,true));
  4. // $res= array_splice($arr, -4,-2,['zs@qq.cn']);
  5. // printf('替换的元素:<pre>%s</pre>',print_r($arr,true));
  6. // 增加元素
  7. $res= array_splice($arr, 1,0,['php','js']);
  8. printf('增加的元素:<pre>%s</pre>',print_r($arr,true));

总结:对回调函数还是理解模糊,尤其array_reduce()和array_walk()还没弄明白。多回看下视频,理解后再补交吧。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议