Blogger Information
Blog 119
fans 3
comment 1
visits 94366
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP常用数组函数
赵大叔
Original
847 people have browsed it

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遍。

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