28

我只想合并

$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(function ()... 来实现它

4

2 回答 2

65

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',
//   ),
// )
于 2012-08-21T09:36:04.650 回答
0

即使您将其表示为字符串文字(参见PHP: Arrays -> Syntax ),您的期望也会失败,因为$aand是 numeric(! )。$b

我认为是否有更好的解决方案取决于您到底需要什么。它可能比递归合并更简单:

1) 你确定$aand$b数组中的每个值都将永远是一个数组吗?

2)如果这些数组共享一个公共密钥(即,如果在您的示例"text"中再次出现)应该发生什么?"up"是否继续递归合并?

于 2012-08-21T10:01:13.600 回答