合并json编码的数组

时间:2016-07-01 08:52:15

标签: php arrays json

假设我有这些数组:

$array1 = [
  'test' => json_encode([
      'key1' => 'val1',
      'key2' => 'val2',
      'key3' => 'val3'
   ])
]

现在我有另一个数组

$array2 = [
  'test' => json_encode([
      'key4' => 'val4'
   ])
]

合并后,我希望它看起来像:

$array3 = [
  'test' => json_encode([
      'key1' => 'val1',
      'key2' => 'val2',
      'key3' => 'val3',
      'key4' => 'val4',
   ])
]

但是当我做$result = array_merge($array1, $array2)

然后我明白了:

$array3 = [
  'test' => json_encode([
      'key4' => 'val4'
   ])
]

有任何建议如何解决这个问题?我用array_merge_recursive尝试过,但也没有给出正确的结果。

感谢。

3 个答案:

答案 0 :(得分:1)

你要做的是一种糟糕的方法。理想情况下,您可以先合并然后进行json编码。此外,所有数组都以test为键,这就是为什么当您使用array_merge时,您只获得第二个数组。你应该做的是访问每个子数组,然后合并它们。但是,这里有一段代码可以输出您需要的内容。

$array1 = [
  'test' => json_encode([
      'key1' => 'val1',
      'key2' => 'val2',
      'key3' => 'val3'
   ])
];

$array2 = [
  'test' => json_encode([
      'key4' => 'val4'
   ])
];


$array3['test'] = json_encode(array_merge(json_decode($array1['test'], true), json_decode($array2['test'], true)));

var_dump($array3);

答案 1 :(得分:0)

在json编码之前合并

试试这个,

$array3 = json_encode(array_merge(json_decode($array1, true),json_decode($array2, true)))

答案 2 :(得分:0)

我通过将test键放入其自己的变量中来解决此问题。 然后我合并了它们并json_encoded了它。