개발자 Q&A

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

2025.06.02 09:49

MongoDBBSONPackedArray::toPHP와 PHP의 Array 차이

목록
  • 함수형광신도 5일 전 2025.06.02 09:49
  • 23
    1
제가 MongoDBBSONPackedArray::toPHP를 사용하여 MongoDB의 데이터를 PHP로 변환할 때, PHP의 Array와 MongoDBBSONPackedArray::toPHP로 변환된 Array가 다르게 처리되는 문제가 있습니다.

PHP의 Array는 다음과 같은 형식으로 데이터를 저장합니다.



array(

    'field1' => 'value1',

    'field2' => 'value2',

    'field3' => 'value3',

)



하지만 MongoDBBSONPackedArray::toPHP로 변환된 Array는 다음과 같은 형식으로 데이터를 저장합니다.



array(

    'field1' => array('value1', 'value2', 'value3'),

    'field2' => array('value4', 'value5', 'value6'),

)



이러한 차이로 인해, PHP의 Array를 MongoDBBSONPackedArray::toPHP로 변환한 Array와 함께 사용할 때, 문제가 발생할 수 있습니다.

다음과 같은 코드를 사용했을 때, 오류가 발생하는 이유는 무엇이며, 이를 해결할 방법이 있을까요?

php

$packedArray = MongoDBBSONPackedArray::fromPHP([

    'field1' => ['value1', 'value2', 'value3'],

    'field2' => ['value4', 'value5', 'value6'],

]);



$document = new MongoDBBSONDocument();

$document->set('field1', $packedArray->toPHP());

$document->set('field2', $packedArray->toPHP());



$collection->insertOne($document);



오류 메시지는 다음과 같습니다.



TypeError: Argument 1 passed to MongoDBBSONDocument::set() must be of type string, array given, called in /path/to/script.php on line 10


    댓글목록

    profile_image
    나우호스팅  5일 전



    MongoDBBSONPackedArray::toPHP로 변환된 Array는 PHP의 Array와 다르게 Array of Array 형식으로 데이터를 저장합니다.

    이러한 차이로 인해 MongoDBBSONPackedArray::toPHP로 변환된 Array를 MongoDB의 Document에 저장할 때, 오류가 발생할 수 있습니다.

    오류 메시지에서 Argument 1 passed to MongoDB\\BSON\\Document::set() must be of type string, array given이란 메시지는 MongoDB의 Document::set() 메소드가 string 타입의 값만 받을 수 있지만, MongoDBBSONPackedArray::toPHP로 변환된 Array는 array 타입의 값이기 때문에 오류가 발생하는 것입니다.

    오류를 해결하기 위해 MongoDBBSONPackedArray::toPHP로 변환된 Array를 string 타입의 값으로 변환해야 합니다.

    다음과 같은 코드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $packedArray = MongoDBBSONPackedArray::fromPHP([
    
        'field1' => ['value1', 'value2', 'value3'],
    
        'field2' => ['value4', 'value5', 'value6'],
    
    ]);
    
    
    
    $document = new MongoDBBSONDocument();
    
    $document->set('field1', json_encode($packedArray->toPHP()));
    
    $document->set('field2', json_encode($packedArray->toPHP()));
    
    
    
    $collection->insertOne($document);
    
    


    위 코드에서는 MongoDBBSONPackedArray::toPHP로 변환된 Array를 json_encode() 함수를 사용하여 string 타입의 값으로 변환합니다.

    이러한 방법으로 오류를 해결할 수 있습니다.

    2025-06-02 09:50

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

검색

게시물 검색