Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 배열 저장 방식 비교: json_encode vs serialize, 무엇을 선택해야 할까?

PHP 배열 저장 방식의 선택 기준

PHP에서 배열을 저장할 때 json_encodeserialize 중 어떤 방식을 선택할지는 프로젝트의 요구 사항에 따라 달라집니다. 일반적으로 JSON이 PHP 직렬화보다 속도가 더 빠르지만, 아래와 같은 조건에는 예외가 됩니다.

  • 깊게 중첩된 배열을 저장해야 하는 경우
  • 저장된 객체를 특정 클래스 인스턴스로 복원해야 하는 경우
  • json_decode를 지원하지 않는 구버전 PHP와 상호 작용해야 하는 경우

위 조건에 해당하지 않는다면, 다음 코드처럼 json_encode를 사용하여 PHP 배열을 저장하는 것이 좋습니다.

json_encode($array, JSON_UNESCAPED_UNICODE)

참고로 JSON은 객체의 원래 클래스 정보를 어디에도 저장하지 않습니다. 대신 데이터를 복원하면 모든 객체가 stdClass의 인스턴스로 변환됩니다.

왜 serialize 대신 json_encode를 사용해야 할까?

json_encodeserialize보다 선호되는 이유는 다음과 같습니다.

  • 높은 이식성(Portability): JSON은 언어에 독립적인 표준 포맷이므로, JavaScript 등 다른 환경과의 데이터 교환이 훨씬 수월합니다.
  • 간결한 처리: 단, JSON에서는 __sleep()__wakeup() 같은 매직 메서드를 활용할 수 없다는 점을 유의해야 합니다.
  • 기본 동작: 기본적으로 public 프로퍼티만 직렬화됩니다. (PHP 5.4 이상이라면 JsonSerializable 인터페이스를 구현하여 이 동작을 변경할 수 있습니다.)

예제 코드

<?php
    // 배열 선언
    $value = array(
        "name"=>"name_me",
        "email"=>"myemail.com"
    );
    // json_encode() 함수 사용
    $json = json_encode($value);
    // 결과 출력
    echo($json);
?>

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

{"name":"name_me","email":"myemail.com"}