博客列表 >02月20日:数组常见函数

02月20日:数组常见函数

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年02月23日 16:19:58813浏览

作业:

1、代码演示:

  1. <?php
  2. // 和数组键有关的函数
  3. $arr = ['id'=>1, 'username'=>'admin', 'email'=>'admin@php.cn'];
  4. echo '<pre>'.print_r($arr,true).'</pre>';
  5. echo '<pre>'.print_r(array_keys($arr),true).'</pre>';
  6. var_dump(array_key_exists('id',$arr));
  7. echo '<br>';
  8. var_dump(array_key_last($arr));
  9. echo '<br>';
  10. var_dump(array_key_first($arr));
  11. echo '<hr>';
  12. // 和数组有关的函数
  13. $arr = [3=>10, 9=>20, 0=>'html', 'id'=>'css', 20=>20, 10=>30];
  14. echo '<pre>'.print_r($arr,true).'</pre>';
  15. echo '<pre>'.print_r(array_values($arr),true).'</pre>';
  16. var_dump(in_array(20,$arr));
  17. echo '<br>';
  18. var_dump(array_search('css',$arr));
  19. echo '<pre>'.print_r(array_unique($arr),true).'</pre>';
  20. echo '<hr>';
  21. // 统计数组统计有关的函数
  22. var_dump(count($arr));
  23. echo '<br>';
  24. var_dump(array_count_values($arr));
  25. echo '<br>';
  26. $arr = [10, 20, 30];
  27. echo array_sum($arr);
  28. echo '<br>';
  29. echo array_product($arr);
  30. echo '<hr>';
  31. //栈和对列的操作:栈后进先出,队列先进先出
  32. $stack=[];
  33. array_push($stack,0,1);
  34. array_push($stack,[2,3,4]);
  35. echo '<pre>'.print_r($stack,true).'</pre>';
  36. array_pop($stack);
  37. echo '<pre>'.print_r($stack,true).'</pre>';
  38. echo '……………………………………………………………………………………………………';
  39. array_unshift($stack,'one','two');
  40. echo '<pre>'.print_r($stack,true).'</pre>';
  41. array_shift($stack);
  42. echo '<pre>'.print_r($stack,true).'</pre>';
  43. echo '<hr>';
  44. $arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
  45. echo '<pre>'.print_r($arr,true).'</pre>';
  46. // sort($arr);
  47. // echo '<pre>'.print_r($arr,true).'</pre>';
  48. // rsort($arr);
  49. // echo '<pre>'.print_r($arr,true).'</pre>';
  50. // asort($arr);
  51. // echo '<pre>'.print_r($arr,true).'</pre>';
  52. // arsort($arr);
  53. // echo '<h1>arsort</h1>';
  54. // echo '<pre>'.print_r($arr,true).'</pre>';
  55. $arr = ['e'=>10, 'a'=>30, 'p'=>50];
  56. ksort($arr);
  57. echo '<pre>'.print_r($arr,true).'</pre>';
  58. krsort($arr);
  59. echo '<pre>'.print_r($arr,true).'</pre>';
  60. $arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];
  61. echo '<pre>'.print_r($arr,true).'</pre>';
  62. natsort($arr);
  63. echo '<pre>'.print_r($arr,true).'</pre>';
  64. echo '<hr>';
  65. $arr = ['id'=>109, 'username'=>'peter', 'age'=> 27, 'salary'=>99999];
  66. print_r($arr);
  67. shuffle($arr);
  68. // print_r($arr);
  69. // print_r(array_reverse($arr));
  70. // print_r(array_flip($arr));
  71. print_r($arr); echo '<hr>';

1、演示结果图:

2、代码:

  1. <?php
  2. $arr= ['Apple', 'Dell', 'Lenovo', 'Hp', 'ThinkPad', 'Huawei', 'Xiaomi'];
  3. // print_r($arr);
  4. // echo '<br>';
  5. // print_r(array_slice($arr,1,3));
  6. // print_r(array_splice($arr,3));
  7. // print_r(array_splice($arr,3,2));
  8. // print_r(array_splice($arr,3,2,['Acer','ASUS']));
  9. // print_r(array_rand($arr,3));默认为一个;
  10. $arr = [
  11. ['id'=>101, 'name'=>'jack', 'age'=>20],
  12. ['id'=>102, 'name'=>'mike', 'age'=>30],
  13. ['id'=>103, 'name'=>'pony', 'age'=>40],
  14. ];
  15. // print_r($arr);
  16. // echo '<hr>';
  17. // print_r(array_column($arr,'name'));
  18. // print_r(array_column($arr,'age','name'));
  19. $arr = ['type'=>'mysql', 'host'=>'localhost', 'username'=>'root', 'password'=>'root'];
  20. $arr1 = ['host'=>'127.0.0.1', 'username'=>'admin','age'=>5];
  21. $arr2 = ['username'=>'peter', 'password'=>'123456'];
  22. print_r(array_replace($arr,$arr1));
  23. print_r(array_replace($arr,$arr1,$arr2));
  24. echo '<hr>';
  25. $arr1 = [10, 20, 30, 40, 60];
  26. $arr2 = [1, 20, 30, 5];
  27. print_r(array_intersect($arr1, $arr2)); echo '<hr>';
  28. // array_diff(),保留第一个数组中不一样的;
  29. print_r(array_diff($arr1,$arr2));
  30. echo '<hr>';
  31. // array_combine():通过合并两个数组来创建一个新数组(第一个数组元素界面);两个数组的数量一样;
  32. $keys = ['type', 'host', 'dbname', 'username', 'password'];
  33. $values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
  34. print_r(array_combine($keys,$values));
  35. echo '<hr>';
  36. //把一个或多个数组合并为一个新数组;
  37. $keys = ['type', 'host', 'dbname', 'username', 'password'];
  38. $values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
  39. $arr2 = [1, 20, 30, 5];
  40. // print_r(array_merge($keys,$values,$arr2));
  41. echo '<hr>';
  42. $arr1 = [10, 20, 30, 40, 60,21,23,44,56,43,56,12];
  43. echo '<pre>'.print_r(array_chunk($arr1,3)).'</pre>';

2、演示结果:

3、代码演示:

  1. <?php
  2. // print_r(array_fill(0,7,'A'));
  3. // print_r(array_fill(2,7,'A'));
  4. // echo '<hr>';
  5. //
  6. // print_r(array_fill_keys($keys, 'hello')); echo '<hr>';
  7. // $arr = ['apple', 'dell', 'thinkpad'];
  8. // print_r(array_pad($arr, 6, 'computer'));
  9. $values = ['id', 'name', 'age', 'hoppy'];
  10. list($id,$name,$age,$hoppy)=$values;
  11. echo "$id,$name,$age,$hoppy";
  12. $str=implode('=',$values);
  13. echo $str;
  14. print_r(explode('=',$str));
  15. $data = ['id'=>1,'name'=>'ldy','age'=>31,'hoppy'=>'跑步'];
  16. extract($data);
  17. echo $id,$name,$age,$hoppy;
  18. $id = 99;
  19. $name = 'Peter Zhu';
  20. $job = 'Lecture';
  21. $data1=compact('id','name','job');
  22. print_r($data1);
  23. echo '<hr>';
  24. $keys = ['host', 'username', 'password'];
  25. $values = ['localhost', 'admin', '666888'];
  26. $result = array_map(function ($value1, $value2) {
  27. return [$value1=>$value2];
  28. }, $keys, $values);
  29. echo '<pre>'.print_r($result,true).'</pre>';
  30. // $results=[];
  31. // foreach($result as $arr){
  32. // $results[current($arr)]=key($arr);
  33. // }
  34. // // print_r($result);
  35. // print_r($results);
  36. $res = array_reduce($result, function ($prev, $current) {
  37. // 获取当前元素的键值
  38. $key = key($current);
  39. $value = current($current);
  40. // 拼装成一个元素并返回
  41. $prev[$key] = $value;
  42. return $prev;
  43. });
  44. print_r($res);

3、演示结果:

作业二 常用数组函数大全

1. 键名相关

  • array_keys: 获取所有键名组成的数组
  • array_key_exists: 是否存在指定键名
  • array_key_last“ 获取最后一个键名php7.3+
  • array_key_first: 获取第一个键名php7.3+

2. 与值相关

  • array_values: 返回数组中所有值组成的数组
  • in_array: 检查数组中是否存在某个值
  • array_search: 搜索指定的值,返回键名
  • array_unique: 删除重复的值

3. 与统计相关

  • count: 统计元素数量或对象属性数量
  • array_count_values: 统计所有值的出现频率

4. 与计算相关

  • array_sum 对数组中所有值求和
  • array_product: 计算数组中所有值的乘积

5. 栈与队列

  • array_push: 从尾部添加一个或多个元素
  • array_pop: 从尾部删除最后一个元素
  • array_unshift: 从头部添加一个或多个元素
  • array_shift: 从头部删除一个元素

6. 排序

6.1 对值排序

  • sort: 按值升序排序, 索引重排
  • asort: 按值升序排序, 索引保持不变
  • rsort: 按值降序排序, 索引重排
  • arsort: 按值降序排序, 索引保持不变

6.2对键排序

  • ksort: 按键名升序排序
  • krsort: 按键名降序排序

6.3 自定义排序

  • usort: 自定义函数对值进行排序
  • uasort: 自定义函数对值排序并保持索引不变
  • uksort: 自定义函数对键名进行排序

6.4 自然排序

  • natsort: 支持数字型字符串排序
  • natcasesort: 不区分大小写

6.5 乱序反转

  • shuffle: 随机打乱一个数组的顺序
  • array_flip: 交换数组中的键和值
  • array_reverse: 反转一个数组

7. 查询与替换

  • array_slice: 从数组中取出一部分
  • array_splice: 去掉数组中一部分并用其它值代替
  • array_rand: 从数组中随机取出一个或多个元素的键名
  • array_column: 获取多维数组中一列组成的新数组
  • array_replace 使用后面数组的值替换第一个数组的值
  • array_replace_recursive 使用传递的数组递归替换第一个数组的元素
  • array_intersect: 计算数组的交集
  • array_intersect_assoc: 返回数组交集,键名也做比较
  • array_diff:返回数组的差集
  • array_diff_assoc: 返回数组差集,键名也做比较

8. 分割与合并

  • array_combine: 通过合并两个数组来创建一个新数组
  • array_merge: 把一个或多个数组合并为一个数组
  • array_chunk: 将一个数组分割成多个子数组

9. 数组指针

  • current: 获取当前元素的值
  • key: 获取当前元素的键名
  • next: 将数组中的内部指针向前移动一位
  • prev: 将数组的内部指针倒回一位
  • end: 将数组的内部指针指向最后一个单元
  • reset: 将数组的内部指针指向第一个单元

10. 自动生成

  • array_fill: 用给定的值填充数组
  • array_fill_keys: 使用指定的键和值填充数组
  • array_pad: 以指定长度将一个值填充进数组

11. 类型转换

  • list: 将数组中的值赋予一组变量(类似解构赋值)
  • implode: 将数组元素按指定字符拼装成字符串
  • explode: 将字符串分割为数组
  • extract: 将关联数组拆分成变量名值对
  • compact: 将一组变量名值对拼装成一个关联数组键值对

12. 回调处理

  • array_filter: 用回调函数过滤数组中的单元
  • array_map: 为数组的每个元素应用回调函数
  • array_reduce: 使用用户自定义函数对数组中的每个元素做回调处理
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议