zoukankan      html  css  js  c++  java
  • PHP实现二维数组(或多维数组)转换成一维数组

    1 array_reduce函数法
    
    用array_reduce()函数是较为快捷的方法:
    $result = array_reduce($user, function ($result, $value) {
      return array_merge($result, array_values($value));
    }, array())
    因为array_merge函数会把相同字符串键名的数组覆盖合并,所以必须先用array_value取出值后再合并。
    
    如果第二维是数字键名,如:
    $user = array(
      'a' => array(100, 'a1'),
      'b' => array(101, 'a2'),
      'c' => array(102, 'a3'),
      'd' => array(103, 'a4'),
      'e' => array(104, 'a5'),
    );
    那么直接这样就可以了:
    $result = array_reduce($user, 'array_merge', array())
    2 array_walk_recursive函数法
    
    用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一维数组。
    $result = [];
    array_walk_recursive($user, function($value) use (&$result) {
      array_push($result, $value);
    });
    例如,下面这个多维数组:
    $user4 = array(
      'a' => array(100, 'a1'),
      'b' => array(101, 'a2'),
      'c' => array(
        'd' => array(102, 'a3'),
        'e' => array(103, 'a4'),
      ),
    );
    用这个方法后就变成:
    $result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');
    3 array_map函数法
    
    用array_map和array_reduce函数的方法类似,如下:
    $result = [];
    array_map(function ($value) use (&$result) {
      $result = array_merge($result, array_values($value));
    }, $user);
    只是需要多声明一个空的$result数组。
    

      

  • 相关阅读:
    Spring 泛型依赖注入
    Spring 注解配置(2)——@Autowired
    Spring bean注解配置(1)
    Spring bean三种创建方式
    Spring中bean的生命周期!
    spring spel表达式语言
    [转]SVN版本冲突解决详解
    [转]Mybatis极其(最)简(好)单(用)的一个分页插件
    [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题
    [转] JPQL
  • 原文地址:https://www.cnblogs.com/hejianrong/p/13043004.html
Copyright © 2011-2022 走看看