2016-07-01 5 views
-1

내가 이러한 배열이 있다고 가정하자 :병합 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으로 시도했지만 올바른 결과를주지 못합니다.

감사합니다.

이 시도 JSON 인코딩 전에

+1

'입력 배열에 동일한 문자열 키가있는 경우 해당 키의 나중 값이 이전 키를 덮어 씁니다. ' –

+7

인코딩하기 전에 먼저 배열을 병합하십시오. – aldrin27

+1

하위 배열을 JSON 인코딩하는 이유는 무엇입니까? – deceze

답변

0

test 키를 자신의 변수에 넣어서이 문제를 해결했습니다. 그런 다음 json_encoded로 병합했습니다.

0

병합,

$array3 = json_encode(array_merge(json_decode($array1, true),json_decode($array2, true))) 
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); 
+0

감사합니다. 하지만 두 배열을 병합 한 후에 인코딩한다고 가정 해 봅시다. 어떻게 작동할까요?// 그게 최고의 솔루션이 될거야 – sanders

+1

그게 내가 보낸 코드에서 작동하는 방법입니다 - $ array3 [ 'test'] = json_encode (array_merge (json_decode ($ array1 [ 'test'], true), json_decode ('$ test1 '['test '] = array_merge (json_decode ($ array1 ['test '], true)이 코드를 인코딩하면된다.), json_decode ($ array2 [ 'test']));' –