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数组。
    

      

  • 相关阅读:
    空值判断(is not null)
    http协议相关面试题
    Linux基本面试题。(感觉也就这几个了)
    1、了解django运行流程
    python笔试常见题
    selenium中一些可能用到的js操作
    元素判断
    二次封装
    关于在阿里云上面安装mysql遇到的一些问题。
    linux常用的一些基本命令
  • 原文地址:https://www.cnblogs.com/hejianrong/p/13043004.html
Copyright © 2011-2022 走看看