PHP array_merge_recursive保存数字键(php array_merge_rec

2019-06-27 05:08发布

我只是想合并

$a = array("59745506"=>array("up" => 0,));
$b = array("59745506"=>array("text" => "jfrj"));
$c = array_merge_recursive_new($a, $b);

结果:

Array
(
    [0] => Array
        (
            [up] => 0
        )

    [1] => Array
        (
            [text] => jfrj
        )

)

预期结果:

    Array
(
    [59745506] => Array
        (
            [up] => 0
            [text] => jfrj
        )

)

在第二评论http://www.php.net/manual/en/function.array-merge-recursive.php工作,是对我的情况下,最好的解决方法(在这里我需要与多个数字键合并阵列,与2级)?

另一种解决方法是用array_map(函数来实现它()...

Answer 1:

array_replace_recursive()函数看起来是你需要的。

$a = array("59745506" => array("up" => 0,));
$b = array("59745506" => array("text" => "jfrj"));
$c = array_replace_recursive($a, $b);
var_export($c);

// array (
//   59745506 => 
//   array (
//     'up' => 0,
//     'text' => 'jfrj',
//   ),
// )


Answer 2:

您的期望失败的关键$a$b是数字,即使你表示它作为一个字符串(!)(参见PHP:数组- >语法 )。

我想,是否有更好的解决方案取决于你究竟需要。 它可能比递归合并更简单:

1)你确定这里面每一个价值$a$b列总是会再次成为一个数组?

2)什么是应该发生的,如果这些阵列共用一个密钥(即,如果"text"再次"up"在你的例子)? 保持递归或不合并?



文章来源: php array_merge_recursive preserving numeric keys