如何在PHP中将数组父级键替换为子数组键以实现指定结构转换?
PHP数组转换:将嵌套子数组的键作为父级索引
你遇到的问题是因为array_column()需要指定固定的列名来提取值,但你的每个子数组的键都不相同,所以这个函数不适用。下面是几种可行的解决方法:
方法1:foreach循环遍历合并
这是最直观的方式,遍历原数组的每个子元素,将其键值对合并到结果数组中:
$originalArray = [ ['for_a' => 'me'], ['for_b' => 'you'], ['for_c' => 'bleeh'], ]; $result = []; foreach ($originalArray as $item) { $result += $item; } print_r($result);
方法2:使用array_reduce函数
通过函数式编程的方式,逐步将子数组合并到初始空数组:
$originalArray = [ ['for_a' => 'me'], ['for_b' => 'you'], ['for_c' => 'bleeh'], ]; $result = array_reduce($originalArray, function($carry, $item) { return $carry + $item; }, []); print_r($result);
方法3:array_merge + 扩展运算符(PHP 5.6+)
这是最简洁的写法,利用扩展运算符将原数组的子数组作为参数传入array_merge():
$originalArray = [ ['for_a' => 'me'], ['for_b' => 'you'], ['for_c' => 'bleeh'], ]; $result = array_merge(...$originalArray); print_r($result);
以上三种方法都能得到你想要的目标数组,其中方法3要求PHP版本在5.6及以上,如果你使用的是较旧版本,推荐用前两种方法。
内容的提问来源于stack exchange,提问作者Xamon
相关产品推荐
相关产品推荐

