在php中反序列化并组合两个数组

时间:2014-05-27 18:43:31

标签: php arrays merge

我有2个数组存储在我的数据库中序列化,当单独解除链接时,它们可能会输出:

    array(1 => 0, 
    2 => 1, 
    3 => 4, 
    4 => 0, 
    5 => 2);


    array(2 => 3,
    4 => 1);       

我需要以第二个数组的值覆盖第一个数组的方式合并它们,但也保留数组1中不在数组2中的任何值,例如2个组合的理想输出将是:

    array(1 => 0, 
    2 => 3, 
    3 => 4, 
    4 => 1, 
    5 => 2);

当我尝试将它们组合时,我得到错误:

    Fatal error: Unsupported operand types

这就是我尝试过的方法(参考:Combine two arrays):

        $array1 = unserialize($row['serialized1']);
        $array2 = unserialize($row['serialized2']);
    $_SESSION['combined_array'] = $array1+$array2;

此外:

    $_SESSION['combined_array'] = unserialize($row['serialized2'])+unserialize($row['serialized1']);

编辑:

我也尝试过:

    $_SESSION['combined_array'] = array_merge($array1,$array2); 

这不是错误,但不会导致任何组合数组。

感谢您的任何指示。

1 个答案:

答案 0 :(得分:1)

检查array_replace()。在处理数字键时,它与array_merge()略有不同:

$array1 = unserialize($row['serialized1']);
$array2 = unserialize($row['serialized2']);
$combined_array = array_replace($array1, $array2);

这很有效,请注意它们与您的代码相反:

$combined_array = $array2 + $array1;

如果Fatal error: Unsupported operand types不是数组,则为空,否则将获得{{1}}。