繁体   English   中英

php array_merge_recursive保留数字键

[英]php array_merge_recursive preserving numeric keys

我只想合并

$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()...

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',
//   ),
// )

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

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

1)你确定$a$b数组中的每个值都将再次成为一个数组吗?

2)如果这些数组共享一个公共密钥(即如果"text" "up"在你的例子中再次"up" )会发生什么? 是否递归合并?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM