博客列表 >常用数组函数-创建-删除-键值操作-回调函数

常用数组函数-创建-删除-键值操作-回调函数

葡萄枝子
葡萄枝子原创
2021年01月31日 20:54:521236浏览

常用数组函数-创建-删除-键值操作-回调函数

1. 创建数组

  1. // 1. 创建数组
  2. echo "1. 创建数组<br>";
  3. // 1.1 字面量
  4. $arr = ['a', 1, 2];
  5. // Array ( [0] => a [1] => 1 [2] => 2 )
  6. echo print_r($arr, true), '<br>';
  7. // 1.2 索引创建
  8. $arr[3] = 'b';
  9. // Array ( [0] => a [1] => 1 [2] => 2 [3] => b )
  10. echo print_r($arr, true), '<br>';
  11. // 1.2 函数创建
  12. $arr = array(1, 2, 3);
  13. // Array ( [0] => 1 [1] => 2 [2] => 3 )
  14. echo print_r($arr, true), '<br>';
  15. // 1.3 填充创建
  16. $arr = range('a', 'f', 2);
  17. // Array ( [0] => a [1] => c [2] => e )
  18. echo print_r($arr, true), '<br>';
  19. // 1.4 位置添加
  20. // 1.4.1 头部添加
  21. $n = array_unshift($arr, 1, 2);
  22. // $n = 5; Array ( [0] => 1 [1] => 2 [2] => a [3] => c [4] => e )
  23. echo "\$n = $n; ", print_r($arr, true), '<br>';
  24. // 1.4.2 尾部添加
  25. $n = array_push($arr, 'g', 'h');
  26. // $n = 7; Array ( [0] => 1 [1] => 2 [2] => a [3] => c [4] => e [5] => g [6] => h )
  27. echo "\$n = $n; ", print_r($arr, true), '<br>';
  28. echo '<hr>';

2. 删除数组

  1. // 2. 删除数组
  2. echo "2. 删除数组<br>";
  3. // 2.1 头部删除
  4. $a = array_shift($arr);
  5. $b = array_shift($arr);
  6. // $a = 1, $b = 2; Array ( [0] => a [1] => c [2] => e [3] => g [4] => h )
  7. echo "\$a = $a, \$b = $b; ", print_r($arr, true), '<br>';
  8. // 2.2 尾部删除
  9. $a = array_pop($arr);
  10. $b = array_pop($arr);
  11. // $a = h, $b = g; Array ( [0] => a [1] => c [2] => e )
  12. echo "\$a = $a, \$b = $b; ", print_r($arr, true), '<br>';
  13. // 2.3.1 位置删除
  14. // 第1位置删2个
  15. $arr1 = array_splice($arr, 1, 2);
  16. // Array ( [0] => c [1] => e ) ; Array ( [0] => a )
  17. echo print_r($arr1, true), '; ', print_r($arr, true), '<br>';
  18. // 2.3.2 位置插入
  19. // 位置1插入数组
  20. $arr2 = array_splice($arr, 1, 0, ['c', 'b']);
  21. // Array ( ) ; Array ( [0] => a [1] => c [2] => b )
  22. echo print_r($arr2, true), '; ', print_r($arr, true), '<br>';
  23. // 2.3.3 更新数组
  24. // 位置1开始两个元素,更新数组 ['b', 'c'] 含两个元素
  25. $arr3 = array_splice($arr, 1, 2, ['b', 'c']);
  26. // Array ( [0] => c [1] => b ) ; Array ( [0] => a [1] => b [2] => c )
  27. echo print_r($arr3, true), '; ', print_r($arr, true), '<br>';
  28. echo '<hr>';

3. 数组指针

  1. // 3. 数组指针
  2. echo "3. 数组指针<br>";
  3. // 0 => a
  4. echo key($arr) .' => '. current($arr) .'<br>';
  5. // 后一个
  6. next($arr);
  7. next($arr);
  8. // 2 => c
  9. echo key($arr) .' => '. current($arr) .'<br>';
  10. // 前一个
  11. prev($arr);
  12. // 1 => b
  13. echo key($arr) .' => '. current($arr) .'<br>';
  14. // 第一个
  15. reset($arr);
  16. // 0 => a
  17. echo key($arr) .' => '. current($arr) .'<br>';
  18. // 最后一个
  19. end($arr);
  20. // 2 => c
  21. echo key($arr) .' => '. current($arr) .'<br>';
  22. echo '<hr>';

4. 键值操作

  1. // 4. 键值操作
  2. echo "4. 键值操作<br>";
  3. // 取键数组
  4. $keys = array_keys($arr);
  5. // Array ( [0] => 0 [1] => 1 [2] => 2 )
  6. echo print_r($keys, true), '<br>';
  7. // 取值数组
  8. $values = array_values($arr);
  9. // Array ( [0] => a [1] => b [2] => c )
  10. echo print_r($values, true), '<br>';
  11. // 判断键存在
  12. // key = 2, exist : true
  13. echo 'key = 2, exist : ', var_export(array_key_exists(2, $arr), true), '<br>';
  14. // 判断值存在
  15. // value = 'b', exist : true
  16. echo 'value = \'b\', exist : ', var_export(in_array('b', $arr), true), '<br>';
  17. // 数组搜索
  18. $pos1 = array_search('b', $arr);
  19. $pos2 = array_search('z', $arr);
  20. // 'b' index : 1
  21. echo "'b' index : ", var_export($pos1, true) .'<br>';
  22. // 'z' index : false
  23. echo "'z' index : ", var_export($pos2, true) .'<br>';
  24. echo '<hr>';

5. 数组回调

  1. // 5. 数组回调
  2. echo "5. 数组回调<br>";
  3. // 5.1 数组漫步
  4. $bool = array_walk($arr, function(&$value, $key, $userdata){
  5. if ($key === 0) $value = $userdata[0] .'-'. $value;
  6. if ($value === 'b') $value = $userdata[1];
  7. if ($value === 'c') $value .= '-'. $userdata[2];
  8. }, ['prefix', '', 'suffix']);
  9. // $bool = true; Array ( [0] => prefix-a [1] => [2] => c-suffix )
  10. echo '$bool = ', var_export($bool, true), '; ', print_r($arr, true), '<br>';
  11. // 5.2 数组过滤
  12. // 5.2.1 过滤空值
  13. $arr = array_filter($arr);
  14. // Array ( [0] => prefix-a [2] => c-suffix )
  15. echo print_r($arr, true), '<br>';
  16. // 5.2.2 条件过滤
  17. // 过滤值中包含字符串 fix 的元素组成的数组
  18. $arr = array_filter($arr, function($value){
  19. return false !== stripos($value, 'fix');
  20. });
  21. // Array ( [0] => prefix-a [2] => c-suffix )
  22. echo print_r($arr, true), '<br>';
  23. // 5.3 数组遍历
  24. // 5.3.1 批量导入
  25. $map_arr1 = array_map(function($file){
  26. // 批量导入
  27. //require $file;
  28. // 返回文件名
  29. return basename($file);
  30. }, glob(__DIR__ .'/012*.php'));
  31. // 当前目录下 012开头且 .php 结尾的文件名
  32. // Array ( [0] => 0125.php [1] => 0126.php [2] => 0127.php [3] => 0128.php [4] => 0129.php )
  33. echo print_r($map_arr1, true), '<br>';
  34. // 5.3.2 批量计算
  35. $arr1 = [1, 2, 3];
  36. $arr2 = [3, 2, 1];
  37. $map_arr2 = array_map(function($a, $b){
  38. return $a * $b;
  39. }, $arr1, $arr2);
  40. // 两个数组,各自项目乘积组成的数组
  41. // Array ( [0] => 3 [1] => 4 [2] => 3 )
  42. echo print_r($map_arr2, true), '<br>';
  43. // 5.4 数组归并
  44. // 5.4.1 数组求和
  45. $arr_reduce1 = array_reduce($map_arr2, function($prev, $next){
  46. return $prev + $next;
  47. });
  48. echo "array_sum : $arr_reduce1<br>";
  49. // 5.4.2 多数组分列求和
  50. $arr_reduce2 = array_reduce([$arr1, $arr2], function($prev, $next){
  51. return array_map(function($a, $b){
  52. return $a + $b;
  53. }, $prev, $next);
  54. }, [0, 0, 0]);
  55. // Array ( [0] => 4 [1] => 4 [2] => 4 )
  56. echo print_r($arr_reduce2, true);
  • 以上1~5例程实例图

常用数组函数

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