Blogger Information
Blog 33
fans 0
comment 0
visits 27672
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
服务端 - PHP - 数组函数
Original
736 people have browsed it

服务端 - PHP - 数组函数

一、10个函数例子

1. array_column():获取多维数组中一列组成的新数组

  • 语法:array_column(array,column_key,index_key)

  • array:必需。指定要使用的多维数组(记录集)

  • column_key:必需。需要返回值的列

  • index_key:可选。作为返回数组的索引/键的列

  • 返回值:返回一个数组,数组的值为输入数组中某个单一列的值

  1. $arr = [
  2. ['name'=>'小明', 'sex'=>'男', 'age'=>18 ],
  3. ['name'=>'小红', 'sex'=>'女', 'age'=>16 ],
  4. ['name'=>'小王', 'sex'=>'男', 'age'=>17 ]
  5. ];
  6. $newArr = array_column($arr, 'sex', 'name');
  7. echo '<pre>';
  8. print_r($newArr);
  9. echo '</pre>';

2. array_replace_recursive():使用传递的数组递归替换第一个数组的元素

  • 语法:array_replace_recursive(array1,array2,array3…)

  • array1:必需。指定一个数组

  • array2:可选。指定一个要替换 array1 的值的数组

  • array3:可选。指定多个要替换 array1 和 array2, … 的值的数组。后面数组的值将覆盖之前数组的值

  • 返回值:返回被替换的数组,如果发生错误则返回 NULL

  1. $arr1 = [
  2. ['name'=>'小明', 'sex'=>'男', 'age'=>18 ],
  3. ['name'=>'小红', 'sex'=>'女', 'age'=>16 ],
  4. ['name'=>'小王', 'sex'=>'男', 'age'=>17 ]
  5. ];
  6. $arr2 = [
  7. ['name'=>'小茜', 'sex'=>'女', 'age'=>17 ],
  8. ['name'=>'小华', 'sex'=>'男', 'age'=>19 ],
  9. ['name'=>'小赵', 'sex'=>'男', 'age'=>18 ]
  10. ];
  11. $newArr1 = array_replace_recursive($arr1, $arr2);
  12. echo '<pre>';
  13. print_r($newArr1);
  14. echo '</pre>';

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

  • 语法:array_intersect(array1,array2,array3…)

  • array1:必需。与其他数组进行比较的第一个数组

  • array2:必需。与第一个数组进行比较的数组

  • array3:可选。与第一个数组进行比较的其他数组

  • 返回值:返回一个交集数组,该数组包括了所有在被比较的数组(array1)中,同时也在任何其他参数数组(array2 或 array3 等等)中的键值

  1. $arr3 = ['name'=>'小明', 'sex'=>'男', 'age'=>18 ];
  2. $arr4 = ['name'=>'小红', 'sex'=>'女', 'age'=>18 ];
  3. $newArr2 = array_intersect($arr3, $arr4);
  4. echo '<pre>';
  5. print_r($newArr2);
  6. echo '</pre>';

4. array_diff():返回数组的差集

  • 语法:array_diff(array1,array2,array3…)

  • array1:必需。与其他数组进行比较的第一个数组

  • array2:必需。与第一个数组进行比较的数组

  • array3:可选。与第一个数组进行比较的其他数组

  • 返回值:返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的值

  1. $arr5 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'email'=>'xiaoming@qq.com' ];
  2. $arr6 = ['name'=>'小红', 'sex'=>'女', 'age'=>18 ];
  3. $arr7 = ['name'=>'小赵', 'sex'=>'男', 'age'=>18 ];
  4. $newArr3 = array_diff($arr5, $arr6, $arr7);
  5. echo '<pre>';
  6. print_r($newArr3);
  7. echo '</pre>';

5. array_merge():把一个或多个数组合并为一个数组

  • 语法:array_merge(array1,array2,array3…)

  • array1:必需。规定数组

  • array2:可选。规定数组

  • array3:可选。规定数组

  • 返回值:返回合并的数组

  1. $arr8 = ['name'=>'小明', 'sex'=>'男', 'age'=>18 ];
  2. $arr9 = ['phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京'];
  3. $newArr4 = array_merge($arr8, $arr9);
  4. echo '<pre>';
  5. print_r($newArr4);
  6. echo '</pre>';

6. array_chunk():把一个数组分割成多个子数组

  • 语法:array_chunk(array,size,preserve_keys)

  • array1:必需。规定要使用的数组

  • size:必需。一个整数,规定每个新数组块包含多少个元素

  • preserve_keys:可选。布尔值,rue - 保留原始数组中的键名,false - 默认。每个新数组块使用从零开始的索引

  • 返回值:返回一个多维的数值数组,从 0 开始,每个维度都包含 size 元素

  1. $arr10 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
  2. $newArr5 = array_chunk($arr10, 3, true);
  3. echo '<pre>';
  4. print_r($newArr5);
  5. echo '</pre>';

7. array_fill():用给定的值填充数组

  • 语法:array_fill(index,number,value)

  • index:必需。规定返回数组的起始索引

  • number:必需。规定填充的元素的数量,其值必须大于 0

  • value:可选。必需。规定用于填充数组的键值

  • 返回值:返回填充的数组

  1. $arr11 = array_fill(2, 4, '你好');
  2. echo '<pre>';
  3. print_r($arr11);
  4. echo '</pre>';

8. array_fill_keys():使用指定的键和值填充数组

  • 语法:array_fill_keys(keys,value)

  • keys:必需。数组,其值将被用于填充数组的键名

  • value:必需。规定用于填充数组的键值

  • 返回值:返回填充的数组

  1. $keys = ['n1', 'n2', 'n3'];
  2. $arr12 = array_fill_keys($keys, 18);
  3. echo '<pre>';
  4. print_r($arr12);
  5. echo '</pre>';

9. array_pad():将指定数量的带有指定值的元素插入到数组中

  • 语法:array_pad(array,size,value)

  • array:必需。数组,其值将被用于填充数组的键名

  • size:必需。规定用于填充数组的键值

  • value:必需。规定从函数返回的数组中新元素的值

  • 返回值:返回带有新元素的数组

  1. $arr13 = ['小明', '男', 18];
  2. $newArr6 = array_pad($arr13, 5, 13785459358);
  3. echo '<pre>';
  4. print_r($newArr6);
  5. echo '</pre>';

10. extract():将关联数组拆分成变量名值对

  • 语法:extract(array,extract_rules,prefix)

  • array:必需。规定要使用的数组

  • extract_rules:可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中已存在的变量名是否冲突。

  • prefix:可选。规定前缀,前缀和数组键名之间会自动加上一个下划线

  • 返回值:返回成功设置的变量数目

  1. $arr14 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358'];
  2. extract($arr14);
  3. echo "<br>\$name = $name; \$sex = $sex; \$age = $age; \$phone = $phone";

二、4个数组回调函数

1. array_filter():用回调函数过滤数组中的单元

  • 语法:array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

  • array:必需。规定要过滤的数组

  • callback:可选。规定要用的回调函数

  • flag:可选。决定 callback 接收的参数形式,ARRAY_FILTER_USE_KEY - callback 接受键名作为的唯一参数,ARRAY_FILTER_USE_BOTH - callback 同时接受键名和键值

  • 返回值:返回过滤的数组

  1. $arr = [10, 11, 12, 13, 14, 15];
  2. $newArr = array_filter($arr, function($n){
  3. return $n > 11 && $n < 14;
  4. });
  5. echo '<pre>';
  6. print_r($newArr);
  7. echo '</pre>';

2. array_map():同时为多个数组的每个元素应用回调函数

  • 语法:array_map(myfunction,array1,array2,array3…)

  • myfunction:必需。用户自定义函数的名称,或者是 null

  • array1:必需。规定数组

  • array2:必需。规定数组

  • array3:必需。规定数组

  • 返回值:返回包含用户自定义函数作用后的 array1 的值的数组

  1. $arr1 = [10, 11, 12, 13, 14, 15];
  2. $arr2 = [15, 16, 17, 18, 19, 21];
  3. echo '<pre>';
  4. print_r(array_map(function($n1, $n2){
  5. if ($n2 - $n1 === 5) {
  6. return '等于5';
  7. } else {
  8. return "不等于5";
  9. };
  10. }, $arr1, $arr2));
  11. echo '</pre>';

3. array_walk():使用用户自定义函数对数组中的每个元素做回调处理

  • 语法:array_walk(array,myfunction,parameter…)

  • array:必需。规定数组

  • myfunction:必需。用户自定义函数的名称

  • parameter…:可选。规定用户自定义函数的参数,您可以为函数设置一个或多个参数

  • 返回值:如果成功则返回 TRUE,否则返回 FALSE

  1. $arr3 = ['name'=>'小明', 'sex'=>'男', 'age'=>18];
  2. function callback(&$value, $key) {
  3. switch ($key) :
  4. case $key === 'name':
  5. return $value = '小红';
  6. case $key === 'sex':
  7. return $value = '女';
  8. case $key === 'age':
  9. return $value = 17;
  10. default:
  11. echo 'error';
  12. endswitch;
  13. }
  14. if (array_walk($arr3, 'callback')){
  15. echo '<pre>';
  16. print_r($arr3);
  17. echo '</pre>';
  18. } else {
  19. echo 'failed';
  20. };
  21. echo '4. array_reduce():迭代处理数组元素';

4. array_reduce():迭代处理数组元素

  • 语法:array_reduce(array,myfunction,initial)

  • array:必需。规定数组

  • myfunction:必需。规定函数的名称

  • initial:可选。规定发送到函数处理的第一个值

  • 返回值:返回结果值

  1. echo '<br>';
  2. $arr4 = ['小明', '小红', '小王'];
  3. function callback1($v1, $v2) {
  4. return $v1.','.$v2;
  5. }
  6. echo array_reduce($arr4, 'callback1', '姓名:');

三、array_slice()与array_splice()

1. array_slice():从数组中取出一部分

  • 语法:array_slice(array,start,length,preserve)

  • array:必需。规定数组

  • start,:必需。数值。规定取出元素的开始位置

  • length:可选。数值。规定被返回数组的长度

  • preserve:可选。规定函数是保留键名还是重置键名

  • 返回值:返回数组中的选定部分

  1. $arr = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
  2. echo '<pre>';
  3. print_r(array_slice($arr, 3, 2, true));
  4. echo '</pre>';

2. array_splice():去掉数组中一部分并用其他值代替

  • 语法:array_splice(array,start,length,array)

  • array:必需。规定数组

  • start,:必需。数值。规定删除元素的开始位置

  • length:可选。数值。规定被移除的元素个数

  • array:可选。规定带有要插入原始数组中元素的数组

  • 返回值:返回包含被提取元素的数组

  1. $arr1 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
  2. array_splice($arr1, 3, 2, ['school'=>'北京大学', 'class'=>'软件工程一班']);
  3. echo '<pre>';
  4. print_r($arr1);
  5. echo '</pre>';

四、课程总结

  • 今天学习了 PHP 的数组函数,通过上课认真听讲和认真完成老师布置的作业,使得我对 PHP 的理解和运用更加深入和熟悉。最主要的知识点是明白和掌握了array_splice()、array_map()等函数的用法。
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!