>  기사  >  백엔드 개발  >  PHP는 데이터를 어떻게 직렬화합니까?

PHP는 데이터를 어떻게 직렬화합니까?

藏色散人
藏色散人원래의
2019-02-25 16:07:095562검색

대부분의 경우 복잡한 배열을 데이터베이스나 PHP 파일에 저장해야 합니다. 어떤 사람들은 이 작업을 수행하기 위해 PHP 내장 함수를 사용할 수 있습니다. 복합 배열은 여러 데이터 유형 또는 배열의 요소를 포함하는 배열입니다.

PHP는 데이터를 어떻게 직렬화합니까?

하지만 우리는 이미 이러한 상황을 처리할 수 있는 편리한 솔루션을 가지고 있습니다. 복잡한 배열을 형식화된 문자열로 변환하기 위해 자체 함수를 작성할 필요가 없습니다. 변수 직렬화에는 널리 사용되는 두 가지 방법이 있습니다. (권장: PHP 튜토리얼)

1, serialize()

2, unserialize()

serialize() 함수를 사용하여 PHP의 모든 데이터를 직렬화할 수 있습니다. serialize() 함수는 분류하려는 데이터인 매개변수를 받아들이고 직렬화된 문자열을 반환합니다.

프로그램은 다음과 같습니다:

<?php 
  
//一个复杂的数组
$myvar = array( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 转换成字符串 
$string = serialize($myvar); 
  
// 打印序列化的数据
echo $string; 
  
?>

출력:

a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:
0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}

위 코드에서 직렬화된 데이터가 있는 변수 $string을 얻습니다. unserialize() 함수를 사용하면 변수 값을 역직렬화하여 복잡한 배열 $myvar의 원래 값을 반환할 수 있습니다.

serialize() 및 unserialize() 함수 예:

<?php
  
// 一个复杂的数组
$myvar = array(
    &#39;hello&#39;,
    42,
    array(1, &#39;two&#39;),
    &#39;apple&#39;
);
  
// 序列化上述数据
$string = serialize($myvar);
  
// 反序列化$string中的数据
$newvar = unserialize($string);  
   
// 打印未序列化的数据
print_r($newvar);
  
?>

출력:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )

    [3] => apple
)

이것은 기본 PHP 직렬화 방법입니다. 그러나 최근 몇 년 동안 JSON이 인기를 얻었기 때문에 PHP 5.2에 JSON 지원을 추가하기로 결정했습니다. 이제 json_encode() 및 json_decode() 함수를 각각 사용하여 PHP에서 데이터를 직렬화 및 역직렬화할 수 있습니다.

JSON 형식은 텍스트 전용이므로 서버와 쉽게 주고받을 수 있으며 모든 프로그래밍 언어에서 데이터 형식으로 사용할 수 있습니다.

PHP에서 json_encode()를 사용하는 방법을 살펴보겠습니다.

<?php 
  
// 一个复杂的数组
$myvar = array( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 序列化数据
$string = json_encode($myvar); 
  
// 打印序列化的数据
echo $string; 
  
?>

출력:

["hello",42,[1,"two"],"apple"]

json_decode() 함수를 사용하여 위 프로그램에 인코딩된 데이터를 디코딩하여 원래의 복잡한 배열을 얻을 수 있습니다.

프로그램은 다음과 같습니다:

<?php 
  
// 一个复杂的数组
$myvar = array( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 序列化数据
$string = json_encode($myvar); 
  
// 解码上面编码的字符串
$newvar = json_decode($string); 
   
// 打印解码后的数据
print_r($newvar); 
  
?>

출력:

Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )
    [3] => apple
)

위 내용은 PHP는 데이터를 어떻게 직렬화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.