博客列表 >PHP常用数组函数

PHP常用数组函数

赵大叔
赵大叔原创
2020年04月28日 10:55:00846浏览

1、PHP常用数组函数

实例演示代码:

  1. <?php
  2. // ## 键名相关
  3. // `array_keys`: 获取所有键名组成的数组
  4. $arr = ['id'=>10, 'username'=>'dashu', 'email'=>'dashu@qq.com'];
  5. print_r(array_keys($arr)); echo '<hr>';
  6. // `array_key_exists`: 是否存在指定键名
  7. echo (array_key_exists('email', $arr) ? '存在' : '不存在') . '<hr>';
  8. // `array_key_last`" 获取最后一个键名php7.3+
  9. echo array_key_last($arr) . '<hr>';
  10. // `array_key_first`: 获取第一个键名php7.3+
  11. echo array_key_first($arr) . '<hr>';
  12. echo '<hr>';
  13. // ## 查询与替换
  14. $arr = ['macbook pro', 'Dell', 'Lenovo', 'Hp', 'ThinkPad', 'Huawei', 'Xiaomi'];
  15. // `array_rand`: 从数组中随机取出一个或多个元素的键名
  16. echo array_rand($arr) .'<br>';
  17. echo $arr[array_rand($arr)] . '<br>';
  18. print_r(array_rand($arr, 4));
  19. foreach (array_rand($arr, 3) as $key) {
  20. echo $arr[$key] . '<br>';
  21. }
  22. echo '<hr>';
  23. // `array_column`: 获取多维数组中一列组成的新数组
  24. $arr = [
  25. ['id'=>101, 'name'=>'张无忌', 'age'=>20],
  26. ['id'=>102, 'name'=>'朱元章', 'age'=>30],
  27. ['id'=>103, 'name'=>'常遇春', 'age'=>40],
  28. ];
  29. $column = array_column($arr, 'name');
  30. $column = array_column($arr, 'name', 'id');
  31. print_r($column); echo '<hr>';
  32. // `array_replace` 使用后面数组的值替换第一个数组的值, 同名的键名会彼此覆盖,适合自定义配置参数
  33. $arr = ['type'=>'mysql', 'host'=>'localhost', 'username'=>'root', 'password'=>'root'];
  34. $arr1 = ['host'=>'127.0.0.1', 'username'=>'admin'];
  35. $arr2 = ['username'=>'peter', 'password'=>'123456'];
  36. print_r(array_replace($arr, $arr1, $arr2)); echo '<hr>';
  37. // `array_intersect`: 计算数组的交集
  38. $arr1 = [10, 20, 30, 40];
  39. $arr2 = [1, 20, 30, 5];
  40. print_r(array_intersect($arr1, $arr2)); echo '<hr>';
  41. // `array_diff`:返回数组的差集
  42. print_r(array_diff($arr1, $arr2)); echo '<hr>';
  43. echo '<hr>';
  44. // 分割与合并
  45. // `array_combine`: 通过合并两个数组来创建一个新数组
  46. $keys = ['type', 'host', 'dbname', 'username', 'password'];
  47. $values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
  48. $values = array_combine($keys, $values);
  49. print_r($values); echo '<hr>';
  50. // `array_merge`: 把一个或多个数组合并为一个数组
  51. $default= ['host'=>'localhost', 'username'=>'root', 'password'=>'root'];
  52. $custom = ['username'=>'admin', 'password'=>'123456'];
  53. $config = array_merge($default, $custom);
  54. print_r($config); echo '<hr>';
  55. // `array_chunk`: 将一个数组分割成多个子数组
  56. // print_r(range(1,5));
  57. $arrs = array_chunk(range(1,20), 6);
  58. print_r($arrs);
  59. echo '<hr>';
  60. // 数组指针
  61. $arr = ['id' => 1, 'name' => '张无忌', 'gender' => '男', 'age' => 20];
  62. // `key`: 获取当前元素的键名, `current`: 获取当前元素的值
  63. echo key($arr) . ' => ' . current($arr) . '<hr>';
  64. // `next`: 将数组中的内部指针向前移动一位
  65. next($arr);
  66. echo key($arr) . ' => ' . current($arr) . '<hr>';
  67. // `end`: 将数组的内部指针指向最后一个单元
  68. end($arr);
  69. echo key($arr) . ' => ' . current($arr) . '<hr>';
  70. // `prev`: 将数组的内部指针倒回一位
  71. prev($arr);
  72. echo key($arr) . ' => ' . current($arr) . '<hr>';
  73. // `reset`: 将数组的内部指针指向第一个单元
  74. reset($arr);
  75. echo key($arr) . ' => ' . current($arr) . '<hr>';
  76. // 自动生成
  77. // `array_fill`: 用给定的值填充数组
  78. print_r(array_fill(0, 5, 'dashu')); echo '<hr>';
  79. // `array_fill_keys`: 使用指定的键和值填充数组
  80. // 先创建一个键名数组
  81. $keys = ['id', 'name', 'age', 'hoppy'];
  82. print_r(array_fill_keys($keys, '张无忌')); echo '<hr>';
  83. // `array_pad`: 以指定长度将一个值填充进数组
  84. $arr = ['iphone', 'xiaomi', 'huawei'];
  85. print_r(array_pad($arr, 6, 'mobile'));
  86. echo '<hr>';
  87. // 类型转换相关
  88. // `list`: 将数组中的值赋予一组变量(类似解构赋值)
  89. // 索引数组转变量
  90. list($id, $name) = [10, '张无忌'];
  91. echo "\$id = $id, \$name = $name <br>";
  92. // 关联数组也支持php7+
  93. list('id'=>$id, 'name'=>$name) = ['id'=>20, 'name'=>'张无忌'];
  94. echo "\$id = $id, \$name = $name <br>";
  95. // 取一部分值
  96. list(,,$email) = [10, '张无忌', 'zhangwuji@qq.com'];
  97. echo $email . '<br>';
  98. // `implode`: 将数组元素按指定字符拼装成字符串
  99. $arr = ['huawei', 'xiaome', 'apple', 'oppo', 'vivo'];
  100. echo implode(', ', $arr) . '<br>';
  101. // `explode`: 将字符串分割为数组
  102. $str = 'blue, green, yellow, red, coral';
  103. print_r(explode(', ', $str)); echo '<hr>';
  104. // `extract`: 将关联数组拆分成变量名值对
  105. $arr = ['host'=>'localhost', 'username'=>'root', 'password'=>'123456'];
  106. extract($arr);
  107. echo "host=$host; username=$username; password=$password <br>";
  108. // `compact`: 将一组变量名值对拼装成一个关联数组键值对
  109. $id = 99;
  110. $name = '张无忌';
  111. $job = 'jiaozhu';
  112. // $arr = ['id'=>$id, 'name'=>$name, 'job'=>$job];
  113. // print_r($arr);
  114. print_r(compact('id', 'name', 'job'));

演示代码效果图:

2、四个数组回调函数

实例演示代码:

  1. <?php
  2. // 回调处理
  3. // `array_filter`: 用回调函数过滤数组中的单元
  4. $arr = [10, null, 73, false, 26, 'demo', 30, 35, 99,];
  5. print_r($arr);echo '<br>';
  6. // 过滤掉数组中的空值/假值
  7. // 返回为true的值组成的数组
  8. print_r(array_filter($arr));echo '<br>';
  9. print_r(array_filter($arr, function($value) {
  10. return $value > 30;
  11. }));
  12. echo '<hr>';
  13. // `array_map`: 为数组的每个元素应用回调函数
  14. $arr = [2, 5, 8, 10];
  15. print_r(array_map(function($value){return $value*2;}, $arr));
  16. echo '<br>';
  17. // 同时处理多个数组
  18. $keys = ['host', 'username', 'password'];
  19. $values = ['localhost', 'admin', '666888'];
  20. $result = array_map(function ($value1, $value2) {
  21. return [$value1=>$value2];
  22. }, $keys, $values);
  23. print_r($result);
  24. echo '<hr>';
  25. // array_reduce(): 用回调函数迭代地将数组简化为单一的值
  26. $res = array_reduce($result, function ($prev, $current) {
  27. // 获取当前元素的键值
  28. $key = key($current);
  29. $value = current($current);
  30. // 拼装成一个元素并返回
  31. $prev[$key] = $value;
  32. return $prev;
  33. });
  34. print_r($res);
  35. echo '<hr>';
  36. // array_walk(): 使用自定义回调对数组中成员逐个处理,返回布尔值
  37. // array_walk(数组, 回调,回调的第三个数组的默认值)
  38. // 主要用于数组成员 的格式化, 不受数组指针影响
  39. $res = ['id'=>20, 'name'=>'无忌', 'email'=>'wuji@qq.com'];
  40. array_walk($res, function($value, $key, $color) {
  41. printf('[ %s ] => <span style="color:%s">%s</span><br>',$key,$color, $value );
  42. },'blue');

演示代码效果图:

3、array_slice()array_splice()函数

实例演示代码:

  1. <?php
  2. $arr = ['iphone', 'vivo', 'oppor', 'oneplus', 'sumsung', 'Huawei', 'Xiaomi'];
  3. print_r($arr); echo '<hr>';
  4. // `array_slice`: 从数组中取出一部分
  5. print_r(array_slice($arr, 2, 2)); echo '<hr>';
  6. // `array_splice`: 去掉数组中一部分并用其它值代替
  7. print_r(array_splice($arr, 3)); echo '<hr>';
  8. print_r($arr); echo '<hr>';
  9. print_r(array_splice($arr, 3, 2)); echo '<hr>';
  10. print_r($arr); echo '<hr>';
  11. print_r(array_splice($arr, 3, 2, ['chuizi', 'redmi'])); echo '<hr>';
  12. print_r($arr); echo '<hr>';

演示代码效果图:

4、总结

函数很多,十分重要,没什么好说的,只有多写多记。给自己定个小目标,课后再写他20遍。

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