【问题标题】:Union two arrays in PHP with the same structure在 PHP 中合并两个具有相同结构的数组
【发布时间】:2022-01-20 00:51:37
【问题描述】:

有没有办法像这个例子一样在 PHP 上合并/合并两个数组?

我的数组:

$A = Array(
    0=>array(
            'type' => "t1",
            'name'=>"John",
    ),
    1=>array(
            'type' => "t1",
            'name'=>"Jane",
    )
);

$B = Array(
    0=>array(
            'surname' => "Doe",
    ),
    1=>array(
            'surname' => "Black",
    )
);

这样的结果:

$Merged = Array(
    0=>array(
            'type' => "t1",
            'name'=>"John",
            'surname' => "Doe",
    ),
    1=>array(
            'type' => "t1",
            'name'=>"Jane",
            'surname' => "Black",
    )
);

数组 A 和 B 的大小始终相同,并且从 DB 中填充。不幸的是,我无法与查询合并,我需要先拆分后合并。

【问题讨论】:

  • 我相信你可以在你的 SQL 查询中加入这两个数组,除非它来自不同的来源
  • 假设您的所有数组都是有序的,那么foreach($A as $b => $a) var_dump($a + $B[$b]) 将是对二维数组求和的最有效方法。它比数组合并解决方案更有效,但我同意 zimorok 的观点,即 SQL 查询重写值得一试。
  • 感谢所有建议。最后我的问题是我的数据库中有一些错误的数据。出于这个原因,当我试图在一次选择中获得很多子查询(+100)时,我的代码中断了,我尝试了这个解决方法。现在我修复了我的数据,一切都完美无缺。

标签: php arrays


【解决方案1】:

使用array_merge。顺便说一句,在这个例子中,01 的索引在 $a$b 是多余的。

<?php

$a = [
    0 => [
        'type' => "t1",
        'name' => "John",
    ],
    1 => [
        'type' => "t1",
        'name' => "Jane",
    ]
];

$b = [
    0 => [
        'surname' => "Doe",
    ],
    1 => [
        'surname' => "Black",
    ]
];

$c = [];

// Assuming that count of $a and $b are equal.

for ($i = 0; $i < count($a); ++$i) {
    $c[$i] = array_merge($a[$i], $b[$i]);
}

print_r($c);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2013-03-24
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    相关资源
    最近更新 更多