php - 通过匹配子数组值合并 2 个关联数组?

标签 php mysql arrays

我需要通过键合并这两个数组aa =>“value”

$array1 = array(
    "aa" => array("RM","PR","LE"),
    "bb" => array("100a","200a","300a"),
    "cc" => array("1.99b","2.99b","3.99b")
);

第二个数组的每个键可能有额外的值,请注意本例中“aa”键中的“ST”值。

$array2 = array(
    "aa" => array("RM","PR","ST","LE"),
    "dd"  => array("UK","UK","UK","UK"),
    "ee" => array("123","456","000","789")
);

最终成为像这样的 1 个数组。

$final_array = array(
    "aa" => array("RM","PR","ST","LE"),
    "bb" => array("100a","200a",null,"300a"),
    "cc" => array("1.99b","2.99b",null,"3.99b")
    "dd"  => array("UK","UK","UK","UK"),
    "ee" => array("123","456","000","789"),
);

在相应位置产生空值。 它需要像 MySQL 连接一样进行处理,array_merge()array_merge_recursive() 将不起作用。 大家有什么想法吗?提前致谢。

最佳答案

假设 $array2 始终大于 $array1 并且数组计数的差值等于 1,并且比较是在键 'aa'< 之间进行的

// Get keys of each array, then merge, then get unique
$all_keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));
// Get difference of 'aa' then the key
$diff_key = key(array_diff($array2['aa'], $array1['aa']));
// Set `$final_array` as equal to `$array1`
$final_array = $array1;
// Loop thru each keys
foreach ($all_keys as $key) {
    // Check if `$array1` has the key
    if (isset($array1[$key])) {
        // Check if `$array2` also has the key
        if (isset($array2[$key])) {
            // Splice array to add element of `$array2` to final array
            array_splice($final_array[$key], $diff_key, 0, $array2[$key][$diff_key]);
        } else {
            // Splice array to add empty element
            array_splice($final_array[$key], $diff_key, 0, '');
        }
    } else {
        // Add `$array2` element to `$final_array`
        $final_array[$key] = $array2[$key];
    }
}


print_r($final_array);

关于php - 通过匹配子数组值合并 2 个关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47843869/

相关文章:

php - 如何使用 PHP 和 jQuery AJAX 从数据库获取数据并将其分配给输入值

javascript - 使用 tinymce 编辑器时,我的数据没有发布到数据库中

javascript - 谁能帮我为这段代码制作一个for循环?

javascript - 对象值循环

MySql 如何向所有 PHP 用户发送消息

javascript - Laravel - 使用 Javascript 调用具有所需参数的路由

php - 在 PHP 中检测客户端语言环境的最简单方法

php - 根据用户和创建时间对 php 数组项进行分组

mysql - 如何使用 UNIX 时间戳(存储为 int)比较可变天数

mysql - 创建触发器,在更新表后自动更新列