我必须在另一个数组之间合并(注入)一个数组。 注入的数组在顶部添加了一个额外的级别。
实际代码不同,但在这里我创建了一个简单的例子来说明我面临的问题。
以下是示例代码:
$mid_array = [
'heading3' => 'Heading 3',
'heading4' => 'Heading 4'
];
$main_array = [
'heading1' => 'Heading 1',
'heading2' => 'Heading 2',
$mid_array,
'heading5' => 'Heading 5'
];
echo '<pre>'; print_r($main_array); echo '</pre>';
输出我
Array
(
[heading1] => Heading 1
[heading2] => Heading 2
[0] => Array
(
[heading3] => Heading 3
[heading4] => Heading 4
)
[heading5] => Heading 5
)
这正是我需要的
Array
(
[heading1] => Heading 1
[heading2] => Heading 2
[heading3] => Heading 3
[heading4] => Heading 4
[heading5] => Heading 5
)
答案 0 :(得分:3)
基于您的阵列可能会发生变化但会继续拥有像heading1,heading2这样的键的假设,这将是我的解决方案
$newArray = array_merge($main_array,$mid_array);
ksort($newArray);
这将返回您需要的数组。
答案 1 :(得分:1)
我认为您正在寻找array_splice
,因此:
array_splice($main_array, 2, 0, $mid_array);
注意:array_splice
不会保留密钥,如果密钥对您很重要,请使用以下命令:
function array_insert(&$input, array $arrayToAdd, int $atPosition) {
$before = array_slice($input, 0, $atPosition, true);
$after = array_slice($input, $atPosition, null, true);
$input = $before + $arrayToAdd + $after;
}
<强>用法强>
array_insert($main_array, $mid_array, 2);
答案 2 :(得分:0)
我认为您正在寻找array_merge
功能。
答案 3 :(得分:0)
您可以使用array_reduce
:
$after = 'heading2';
$result = array_reduce(
array_keys($main_array),
function ($carry, $key) use ($main_array, $after, $mid_array) {
$carry[$key] = $main_array[$key];
return $key === $after
? array_merge($carry, $mid_array)
: $carry;
},
[]
);
这是the demo。
答案 4 :(得分:0)
如果键排序存在问题(类似于array_merge),则可以通过递归遍历来展平插入的数组。你走的路可以随心所欲地挑选你需要的东西。
<?php
$insert = [
'foo' => 'And it\'s been the ruin of many a poor boy',
'bar' => 'And god I know I\'m one'
];
$inserted = [
'big' => 'There is a house in New Orleans',
'fat' => 'They call the rising sun',
$insert,
'mama' => 'My mother was a taylor'
];
$flattened = [];
array_walk_recursive(
$inserted,
function($v, $k) use (&$flattened) {
$flattened[$k] = $v;
}
);
var_export($flattened);
输出:
array (
'big' => 'There is a house in New Orleans',
'fat' => 'They call the rising sun',
'foo' => 'And it\'s been the ruin of many a poor boy',
'bar' => 'And god I know I\'m one',
'mama' => 'My mother was a taylor',
)