【问题标题】:Wrong numeric key when using php array_merge_recursive使用 php array_merge_recursive 时错误的数字键
【发布时间】:2015-02-01 01:35:10
【问题描述】:

我正在尝试使用 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
  • 谢谢。这似乎有效。请提交答案以确认。 @ThinkDifferent

标签: php arrays recursion merge


【解决方案1】:

使用array_replace_recursive 而不是array_merge_recursive

【讨论】:

    【解决方案2】:

    你可以改变你的论点的顺序

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

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

    【讨论】:

    • 感谢您的回答。这也有效,只是我对存储的键进行了两次以上的合并,这意味着首先排序,当 array_replace_recursive 没有排序时这样做
    猜你喜欢
    • 2012-08-16
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多