如何在保留二级关联键的前提下扁平化PHP二维数组?
实现二维数组扁平化并保留二级键的PHP方案
当然可以实现,以下是几种实用的PHP解决方案,都能得到你期望的一维数组结果:
方法一:foreach循环遍历合并
这是最直观易懂的方式,适配所有PHP版本:
$data = [ [2015 => '2015'], [2016 => '2016'], [2017 => '2017'], [2018 => '2018'], [2019 => '2019'], [2020 => '2020'], [2021 => '2021'], [2022 => '2022'], [2023 => '2023'] ]; $result = []; foreach ($data as $item) { // 使用+=合并子数组,若存在重复键,原有键值会保留(不会被后续覆盖) $result += $item; } print_r($result);
方法二:array_reduce函数简化代码
利用数组归约函数实现更简洁的写法:
$result = array_reduce($data, function($carry, $item) { return $carry + $item; }, []); print_r($result);
逻辑和foreach一致,通过迭代将每个子数组合并到初始空数组中。
方法三:array_merge结合解包运算符(PHP 7.4+)
如果你的PHP版本在7.4及以上,可以用解包运算符让代码更简洁:
$result = array_merge(...$data); print_r($result);
注意:array_merge遇到重复键时,后续的键值会覆盖前面的,这和+=的行为相反,可根据实际需求选择。
以上三种方法都能输出你需要的一维数组,完整保留所有原二级键。
内容的提问来源于stack exchange,提问作者K1m4
相关产品推荐
相关产品推荐

