[PHP语言] PHP二维数组(或任意维数组)转换成一维数组的方法汇总

[复制链接]
查看2517 | 回复3 | 2020-10-31 14:59:00 | 显示全部楼层 |阅读模式

假设有下面一个二维数组:

$user = array(
    '0' => array('id' => 100, 'username' => 'a1'),
    '1' => array('id' => 101, 'username' => 'a2'),
    '2' => array('id' => 102, 'username' => 'a3'),
    '3' => array('id' => 103, 'username' => 'a4'),
    '4' => array('id' => 104, 'username' => 'a5'),
);

现在要转换成一维数组,有两种情况:

一种是将指定列转换成一维数组,这在另一篇文章有总结:《PHP提取多维数组指定一列的方法大全》。

现在我们重点讲第二种情况,就是把所有的值都转换成一维数组,而且键值相同不会被覆盖,转换后的一维数组是这样的:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4', 104, 'a5');

主要有下面几个方法。

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

另外,也可以用array_walk的方法,和foreach循环的方法,原理和上面一样。

更多PHP相关知识,请访问PHP中文网!

以上就是PHP二维数组(或任意维数组)转换成一维数组的方法汇总的详细内容,更多请关注爱上源码网其它相关文章!

  • 微信
  • 分享
  • 相关标签:数组 转换
  • 本文转载于:www.awaimai.com,如有侵犯,请联系916990011@qq.com删除
    • 上一篇:PHP提取多维数组指定一列的方法大全
    • 下一篇:PHP获取绝对路径dirname(__FILE__)和__DIR__比较

    相关文章

    相关视频

    • PHP数组合并之array_merge和数组相加
    • php判断从数据库查出的二维数组是否有重复值
    • PHP二维数组按照指定的字段排序的函数
    • PHP提取多维数组指定一列的方法大全
    • PHP二维数组(或任意维数组)转换成一维数组的方法...
    • 09_二维数组输出到表格
    • 04_获取二维数组中指定列
    • 01_统计多维数组的元素个数
    本文有爱上源码下载完入驻作者发布,如果对您版权造成侵害,可以联系本站站长管理进行维权删除,本站收到维权24小时内进行处理,谢谢您关注23ym.cn! 本站分享大量程序员技术文章以及对编程开发的初级入门教程,包括图文讲解笔记和高清视频下载~
    回复

    使用道具 举报

    和你相伴1 | 2021-5-22 21:04:21 | 显示全部楼层
    支持悟空源码,越来越好
    回复

    使用道具 举报

    升密示 | 2022-2-5 11:16:29 | 显示全部楼层
    厉害了,悟空源码资源多教程多!
    回复

    使用道具 举报

    945坏男人 | 2022-6-1 14:27:06 | 显示全部楼层
    厉害了悟空源码,这么多资源
    回复

    使用道具 举报

    天褐女孩涛 | 2022-6-2 23:57:20 | 显示全部楼层
    5kym.cn这个站资源太全了
    回复

    使用道具 举报

    春天到了 | 2022-12-27 10:21:29 | 显示全部楼层
    感谢悟空源码分享精品资源!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则