Blogger Information
Blog 11
fans 0
comment 0
visits 7549
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP数组函数
老陈
Original
864 people have browsed it

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()还没弄明白。多回看下视频,理解后再补交吧。

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