php - 合并 2 个数组并合并数字键的结果

标签 php arrays

我有 2 个数组,我希望通过每个数字键将其中合并/分组在一起。 例如

Array1
(
    [2009] => 131
    [2008] => 940
    [2007] => 176
    [2006] => 1
)
Array2
(
    [2008] => 9
    [2007] => 3
)

我希望输出是:

Array (
    [2009] => 131
    [2008] => Array (
                     [0]=>940
                     [1]=>9
                    )
    [2007] => Array (
                     [0]=>176
                     [1]=>3
                    )
    [2006] => 1
)

我到底如何实现这一目标?我尝试过 array_merge 但我丢失了 key 并且它们没有分组。

最佳答案

如果我没看错,您只希望这些键保存一个数组,该数组引用更多而不是单个值。其他键仍应引用标量值...

所以你需要一个两步走的策略:

// 1.) turn _all keys into arrays
foreach (array($input1,$input2) as $array)
    foreach ($array1 as $key=>$val)
        $output[$key][]=$val;
// 2.) reconvert elements with single entry to a scalar value again
foreach ($output as $key=>$candidate)
    if (1==count($candidate))
        $output[$key]=$candidate[0];
// test output
print_r($output);

关于php - 合并 2 个数组并合并数字键的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856276/

相关文章:

php - 在 php 文件中使用 css 插入通用边距的特定格式

c++ - 数组在 C++ 函数中有垃圾值!

创建/分配 p_threads 数组

Javascript 用于分割字符串并循环以获取字符

PHP 替代品?

php - 使用 PHP Form Builder 类提交表单后如何保留 url 变量

c++ - 解压 C++ 指针/引用语法

android - 为什么 List<Float>.toFloatArray 与填充 FloatArray 相比这么慢? (漏洞?)

php - 使用php将excel数据导入数据库表

php - 在数据库中存储和更新抓取的数据