php serialize() 및 unserialize() 사용방법

내 문제는 아주 기본적인 것이다.

정확히 무엇이 필요한지에 대해 내 요구를 충족시킬 만한 예를 찾지 못했다.serialize()그리고.unserialize()평균은 php입니까?예를 들어 어레이를 직렬화하고 출력을 설명할 수 없는 형식으로 표시합니다.그들의 전문용어를 통해 기본적인 개념을 이해하는 것은 정말 어렵다.

편집:

<?php
$a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3'); print_r($a); echo ("<br></br>"); $b=serialize($a); print_r($b);
?> 

출력:

Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";} 

두 번째 출력을 이해할 수 없습니다.그 외에 php 어레이를 사용하기 전에 serialize를 해야 하는 상황에 대해 예를 들어주실 수 있나요?



질문에 대한 답변



PHP 배열, 개체 또는 기타 복잡한 데이터 구조는 실행 중인 PHP 스크립트 외부에서 전송, 저장 또는 사용할 수 없습니다.스크립트를 한 번 실행하는 것 이상으로 복잡한 데이터 구조를 유지하려면 스크립트를 직렬화해야 합니다.즉, 구조를 데이터베이스, 텍스트 파일, 소켓 등 PHP 이외의 것으로 처리할 수 있는 “하위 공통분모”에 넣는 것입니다.표준 PHP 함수serialize이러한 것을 표현하기 위한 형식일 이며, 데이터 구조를 PHP 고유의 문자열 표현으로 직렬화하고 이를 사용하여 PHP 개체로 되돌릴 수 있습니다.unserializeJSON이나 XML과 같은 다른 형식도 많이 있습니다.


예를 들어 다음과 같은 일반적인 문제를 생각해 보겠습니다.

Javascript에 PHP 어레이를 전달하려면 어떻게 해야 하나요?

PHP와 Javascript는 문자열로만 통신할 수 있습니다.스트링을 넘겨줄 수 있습니다."foo"Javascript에 쉽게 접근할 수 있습니다.넘길 수 있어요.1Javascript에 쉽게 접근할 수 있습니다.부울 값을 전달할 수 있습니다.true그리고.falseJavascript에 쉽게 접근할 수 있습니다.하지만 어떻게 이 어레이를 Javascript에 넘길 수 있을까요?

Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )

정답은 시리얼라이제이션입니다.PHP/Javascript의 경우, 실제로는 JSON이 더 나은 시리얼라이제이션 형식입니다.

{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' } 

Javascript는 이를 실제 Javascript 배열로 쉽게 되돌릴 수 있습니다.

이는 동일한 데이터 구조를 나타내는 것과 마찬가지로 유효합니다.

a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";} 

그러나 PHP만이 이것을 사용하고 있으며, 다른 곳에서는 이 포맷을 거의 지원하지 않습니다.
이것은 매우 일반적인 것으로, 서포트도 잘 되고 있습니다.

<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element> </array> 

복잡한 데이터 구조를 문자열로 전달해야 하는 경우가 많습니다.임의의 데이터 구조를 문자열로 나타내는 시리얼화는 이 방법을 해결합니다.




PHP serialize() unserialize() 사용 현황

http://freeonlinetools24.com/serialize

echo '<pre>'; // say you have an array something like this
$multidimentional_array= array(
array(
array("rose", 1.25, 15),
array("daisy", 0.75, 25),
array("orchid", 4, 7)
),
array(
array("rose", 1.25, 15),
array("daisy", 0.75, 25),
array("orchid", 5, 7)
),
array(
array("rose", 1.25, 15),
array("daisy", 0.75, 25),
array("orchid", 8, 7)
) );
// serialize
$serialized_array=serialize($multidimentional_array); print_r($serialized_array); 

그러면 다음과 같은 결과를 얻을 수 있습니다.

a:3:{i:0;a:3:{i:0;a:3:{i:0;s:4:"rose";i:1;d:1.25;i:2;i:15;}i:1;a:3:{i:0;s:5:"daisy";i:1;d:0.75;i:2;i:25;}i:2;a:3:{i:0;s:6:"orchid";i:1;i:4;i:2;i:7;}}i:1;a:3:{i:0;a:3:{i:0;s:4:"rose";i:1;d:1.25;i:2;i:15;}i:1;a:3:{i:0;s:5:"daisy";i:1;d:0.75;i:2;i:25;}i:2;a:3:{i:0;s:6:"orchid";i:1;i:5;i:2;i:7;}}i:2;a:3:{i:0;a:3:{i:0;s:4:"rose";i:1;d:1.25;i:2;i:15;}i:1;a:3:{i:0;s:5:"daisy";i:1;d:0.75;i:2;i:25;}i:2;a:3:{i:0;s:6:"orchid";i:1;i:8;i:2;i:7;}}} 

다시 원래 어레이를 가져오려면 PHP unserialize() 함수를 사용하십시오.

$original_array=unserialize($serialized_array); var_export($original_array); 

이게 도움이 됐으면 좋겠다




<?php $a= array("1","2","3"); print_r($a); $b=serialize($a); echo $b; $c=unserialize($b); print_r($c); 

이 프로그램을 실행하면 출력이 에코됩니다.

a:3:{i:0;s:1:"1";i:1;s:1:"2";i:2;s:1:"3";} 


여기서
a=배열 크기
i=어레이 번호의 수
s=배열 값의 크기

직렬화를 사용하여 데이터베이스에 데이터 어레이를 저장할 수 있습니다.
사용하는 데이터를 취득해, UN시리얼라이즈 할 수 있습니다.




php 값을 저장할 수 있도록 하려면 문자열 값으로 설정해야 합니다.이것이 serialize()의 동작입니다.unserialize()는 그 반대입니다.




대부분의 저장 매체는 문자열 유형을 저장할 수 있습니다.어레이나 오브젝트와 같은 PHP 데이터 구조를 직접 저장할 수 없으며, 데이터 저장 매체와 PHP를 결합할 수 있으므로 저장해서는 안 됩니다.

대신,serialize()그럼 이러한 구조 중 하나를 문자열로 저장할 수 있습니다.스트링 표현에서 시리얼을 해제할 수 있습니다.unserialize().

에 익숙하다면json_encode()그리고.json_decode()(및 일반적으로 JSON), 개념은 비슷합니다.