在PHP中的另一个数组之间注入一个数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在PHP中的另一个数组之间注入一个数组相关的知识,希望对你有一定的参考价值。
我必须在另一个数组之间合并(注入)一个数组。注入的数组在顶部添加了一个额外的级别。
实际代码是不同的,但在这里我创建了一个简单的例子来说明我面临的问题。
以下是示例代码:
$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
)
答案
基于您的阵列可能会发生变化但仍会继续使用heading1,heading2等键的假设,这将是我的解决方案
$newArray = array_merge($main_array,$mid_array);
ksort($newArray);
这将返回您需要的数组。
另一答案
我想你正在寻找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);
另一答案
我认为你正在寻找array_merge
功能。
http://php.net/manual/en/function.array-merge.php
另一答案
你可以使用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。
另一答案
如果键排序存在问题(类似于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',
)
以上是关于在PHP中的另一个数组之间注入一个数组的主要内容,如果未能解决你的问题,请参考以下文章
在java中,如何在int数组中为该数组中的另一个值添加值?
根据我的以下示例,如何将数组添加到 Objective c 中的另一个数组?