使用 php array_merge_recursive时的数字键错误


Wrong numeric key when using php array_merge_recursive

我正在尝试使用 array_replace_recursive递归合并两个数组。这是代码:

$col = array();
$new = array_merge_recursive($col, array('table1' => array(1 => true)));
$new = array_merge_recursive($new, array('table1' => array(0 => false)));

$new数组的转储是

array(1) { ["table1"]=> array(2) { [1]=> bool(true) [2]=> bool(false) } }

我需要的是保留"table1"数组的数字键。预期结果应该是

array(1) { ["table1"]=> array(2) { [0]=> bool(false) [1]=> bool(true) } }

有人对此有解决方案吗?

使用 array_replace_recursive 而不是 array_merge_recursive

您可以切换参数的顺序

$new = array_merge_recursive(array(), array('table1' => array(0 => false)));
$new = array_merge_recursive($new, array('table1' => array(1 => true)));

遇到的问题是您已经创建了一个键,因此后续调用将附加到数组的第一个元素。