我只想合并
$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条评论是否有效,是否是我案例的最佳解决方案(我需要将数组与多个数字键合并,并且有2个级别)?
另一种解决方法是使用array_map(function()...
)实现它答案 0 :(得分:56)
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',
// ),
// )
答案 1 :(得分:1)
您的期望失败,因为$a
和$b
的键是数字(!),即使您将其表示为字符串文字(参见PHP: Arrays -> Syntax)。
我认为是否有更好的解决方案取决于您完全需要什么。它可能比递归合并更简单:
1)您确定$a
和$b
数组中的每个值都将再次成为数组吗?
2)如果这些数组共享一个公共密钥(即如果"text"
在您的示例中再次"up"
)会发生什么?是否以递归方式合并?