我有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);
这不是错误,但不会导致任何组合数组。
感谢您的任何指示。
答案 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}}。