在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中的另一个数组之间注入一个数组的主要内容,如果未能解决你的问题,请参考以下文章

从C#中的另一个类访问多种类型的多维数组

Vue拼接(将数组项移动到数组中的另一个位置)不更新DOM

在java中,如何在int数组中为该数组中的另一个值添加值?

根据我的以下示例,如何将数组添加到 Objective c 中的另一个数组?

检查数组是不是包含在 PostgreSQL 中的另一个数组中

如何将数据存储在动态二维数组中,该数组在 C++ 中的另一个结构中也使用的结构中声明