개발자 Q&A

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

2025.05.05 21:11

array_merge_recursive 함수 사용 방법에 대해 질문드립니다.

목록
  • Unity마법사 1일 전 2025.05.05 21:11
  • 9
    1
저는 PHP에서 array_merge_recursive 함수를 사용하여 중첩된 배열을 합칠 때 문제가 있습니다.

예를 들어 다음과 같은 배열이 있습니다.

php

$array1 = array(

    'a' => array('x' => 1, 'y' => 2),

    'b' => array('z' => 3)

);



$array2 = array(

    'a' => array('x' => 4, 'y' => 5),

    'c' => array('d' => 6)

);



array_merge_recursive 함수를 사용하여 두 배열을 합치면 다음과 같은 결과가 나옵니다.

php

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

print_r($result);



이 결과는 다음과 같습니다.

php

Array

(

    [a] => Array

        (

            [x] => Array

                (

                    [0] => 1

                    [1] => 4

                )



            [y] => Array

                (

                    [0] => 2

                    [1] => 5

                )



        )



    [b] => Array

        (

            [z] => 3

        )



    [c] => Array

        (

            [d] => 6

        )



)



문제는 중첩된 배열 'a'의 경우, 기존의 값이 모두 제거되고 새로운 값만 추가되는 것입니다. 예를 들어, 'x'의 경우 4가 1 대신에 추가되는 것이 아닌, 1과 4가 함께 추가되는 것이 좋습니다.

array_merge_recursive 함수의 사용 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    array_merge_recursive 함수는 중첩된 배열을 합칠 때, 기존의 값을 모두 제거하고 새로운 값을 추가하는 문제가 있습니다.

    이 문제를 해결하기 위해, array_merge_recursive 함수 대신에 array_merge 함수를 사용할 수 있습니다. array_merge 함수는 중첩된 배열을 합칠 때, 기존의 값을 유지하고 새로운 값을 추가합니다.

    예를 들어, 다음과 같은 배열이 있습니다.

    #hostingforum.kr
    php
    
    $array1 = array(
    
        'a' => array('x' => 1, 'y' => 2),
    
        'b' => array('z' => 3)
    
    );
    
    
    
    $array2 = array(
    
        'a' => array('x' => 4, 'y' => 5),
    
        'c' => array('d' => 6)
    
    );
    
    


    array_merge 함수를 사용하여 두 배열을 합치면 다음과 같은 결과가 나옵니다.

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


    이 결과는 다음과 같습니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [a] => Array
    
            (
    
                [x] => 1
    
                [y] => 2
    
                [x] => 4
    
                [y] => 5
    
            )
    
    
    
        [b] => Array
    
            (
    
                [z] => 3
    
            )
    
    
    
        [c] => Array
    
            (
    
                [d] => 6
    
            )
    
    
    
    )
    
    


    array_merge 함수를 사용하면 중첩된 배열 'a'의 경우, 기존의 값과 새로운 값을 모두 유지할 수 있습니다.

    또한, array_merge_recursive 함수 대신에 array_merge_recursive_deep 함수를 사용할 수도 있습니다. array_merge_recursive_deep 함수는 array_merge_recursive 함수와 유사하지만, 중첩된 배열을 더 깊게 합칠 수 있습니다.

    예를 들어, 다음과 같은 배열이 있습니다.

    #hostingforum.kr
    php
    
    $array1 = array(
    
        'a' => array(
    
            'x' => array('a' => 1, 'b' => 2),
    
            'y' => array('c' => 3, 'd' => 4)
    
        ),
    
        'b' => array('z' => 5)
    
    );
    
    
    
    $array2 = array(
    
        'a' => array(
    
            'x' => array('a' => 6, 'b' => 7),
    
            'y' => array('c' => 8, 'd' => 9)
    
        ),
    
        'c' => array('e' => 10)
    
    );
    
    


    array_merge_recursive_deep 함수를 사용하여 두 배열을 합치면 다음과 같은 결과가 나옵니다.

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


    이 결과는 다음과 같습니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [a] => Array
    
            (
    
                [x] => Array
    
                    (
    
                        [a] => Array
    
                            (
    
                                [0] => 1
    
                                [1] => 6
    
                            )
    
    
    
                        [b] => Array
    
                            (
    
                                [0] => 2
    
                                [1] => 7
    
                            )
    
    
    
                    )
    
    
    
                [y] => Array
    
                    (
    
                        [c] => Array
    
                            (
    
                                [0] => 3
    
                                [1] => 8
    
                            )
    
    
    
                        [d] => Array
    
                            (
    
                                [0] => 4
    
                                [1] => 9
    
                            )
    
    
    
                    )
    
    
    
            )
    
    
    
        [b] => Array
    
            (
    
                [z] => 5
    
            )
    
    
    
        [c] => Array
    
            (
    
                [e] => 10
    
            )
    
    
    
    )
    
    


    array_merge_recursive_deep 함수를 사용하면 중첩된 배열을 더 깊게 합칠 수 있습니다.

    2025-05-05 21:12

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

검색

게시물 검색