개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.09 19:48

array_merge_recursive 문제점 확인 및 해결방법

목록
  • 프로그래밍도깨비 5일 전 2025.04.09 19:48
  • 27
    1
제가 array_merge_recursive() 함수를 사용하여 두 개의 배열을 합쳐보려고 하는데, 하나의 키가 중복되는 경우에 대한 문제점이 궁금합니다.

예를 들어, 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다.

php

$array1 = [

    'name' => 'John',

    'age' => 25,

    'address' => [

        'street' => '123 Main St',

        'city' => 'Anytown',

        'state' => 'CA'

    ]

];



$array2 = [

    'name' => 'Jane',

    'age' => 30,

    'address' => [

        'street' => '456 Elm St',

        'city' => 'Othertown',

        'country' => 'USA'

    ]

];



이러한 두 개의 배열을 array_merge_recursive() 함수를 사용하여 합치면 다음과 같이 중복되는 키의 경우에 대한 처리가 궁금합니다.

php

$result = array_merge_recursive($array1, $array2);

print_r($result);



이러한 경우에 array_merge_recursive() 함수는 어떻게 처리하는지 알고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  5일 전



    array_merge_recursive() 함수는 중복되는 키의 경우에 대한 처리는 다음과 같습니다.

    - 단순한 키의 경우: 중복되는 키의 값을 두 번째 배열의 값으로 덮어씁니다.
    - 배열의 키의 경우: 중복되는 키의 배열을 두 번째 배열의 배열로 덮어씁니다.

    예를 들어, 다음과 같은 두 개의 배열이 있다고 가정해 보겠습니다.

    #hostingforum.kr
    php
    
    $array1 = [
    
        'name' => 'John',
    
        'age' => 25,
    
        'address' => [
    
            'street' => '123 Main St',
    
            'city' => 'Anytown',
    
            'state' => 'CA'
    
        ]
    
    ];
    
    
    
    $array2 = [
    
        'name' => 'Jane',
    
        'age' => 30,
    
        'address' => [
    
            'street' => '456 Elm St',
    
            'city' => 'Othertown',
    
            'country' => 'USA'
    
        ]
    
    ];
    
    


    이러한 두 개의 배열을 array_merge_recursive() 함수를 사용하여 합치면 다음과 같이 중복되는 키의 경우에 대한 처리가 됩니다.

    #hostingforum.kr
    php
    
    $result = array_merge_recursive($array1, $array2);
    
    print_r($result);
    
    


    결과는 다음과 같습니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [name] => Array
    
            (
    
                [0] => John
    
                [1] => Jane
    
            )
    
    
    
        [age] => Array
    
            (
    
                [0] => 25
    
                [1] => 30
    
            )
    
    
    
        [address] => Array
    
            (
    
                [street] => Array
    
                    (
    
                        [0] => 123 Main St
    
                        [1] => 456 Elm St
    
                    )
    
    
    
                [city] => Array
    
                    (
    
                        [0] => Anytown
    
                        [1] => Othertown
    
                    )
    
    
    
                [state] => Array
    
                    (
    
                        [0] => CA
    
                    )
    
    
    
                [country] => Array
    
                    (
    
                        [0] => USA
    
                    )
    
    
    
            )
    
    
    
    )
    
    


    위의 결과에서 볼 수 있듯이, 단순한 키의 경우 'name'과 'age'의 키가 중복되었습니다. 이 경우 두 번째 배열의 값이 중복되는 키의 값으로 덮어씁니다. 배열의 키의 경우 'address'의 키가 중복되었습니다. 이 경우 두 번째 배열의 배열이 중복되는 키의 배열로 덮어씁니다.

    2025-04-09 19:49

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,413건 / 57 페이지

검색

게시물 검색