Tuần tự hóa dữ liệu trong PHP

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

Thông thường chúng ta cần lưu trữ một mảng phức tạp trong cơ sở dữ liệu hoặc trong một tệp từ PHP (Còn được gọi là tuần tự hóa dữ liệu)

Tuần tự hóa dữ liệu trong PHP
Tuần tự hóa dữ liệu trong PHP

Mặc dù có thể bạn đã tìm kiếm một số hàm được tích hợp sẵn để thực hiện tuần tự hóa trong PHP.

Mảng phức tạp là các mảng có các phần tử của nhiều kiểu dữ liệu hoặc nhiều mảng.

Nhưng, chúng ta có một giải pháp tốt hơn để xử lý tình huống này.

Chúng ta cũng không phải viết hàm riêng để chuyển mảng phức tạp thành chuỗi có định dạng.

Có hai phương thức phổ biến của tuần tự hóa dữ liệu, đó là:

  • serialize()
  • unserialize()

Ví dụ về tuần tự hóa dữ liệu trong PHP với serialize() / unserialize().

Chúng ta có thể tuần tự hóa bất kỳ dữ liệu nào trong PHP bằng cách sử dụng hàm serialize().

Hàm serialize() chấp nhận một tham số duy nhất là dữ liệu chúng ta muốn tuần tự hóa và trả về một chuỗi tuần tự hóa.

Hãy xem ví dụ bên dưới đây:

<?php 
  
// Một mảng phức tạp
$myvar = array( 
    'Xin chào', 
    123, 
    array(1, 'laptrinhvienphp.com'), 
    'học php'
); 
  
// Tuần tự hóa dữ liệu trên 
$string = serialize($myvar); 
  
// Hủy tuần tự hóa dữ liệu $string 
$newvar = unserialize($string);   
   
// In ra dữ liệu chưa tuần tự hóa 
print_r($newvar); 
  
?> 

Kết quả chúng ta có:

Array
(
    [0] => Xin chào
    [1] => 123
    [2] => Array
        (
            [0] => 1
            [1] => laptrinhvienphp.com
        )

    [3] => học php
)

Đây là phương thức tuần tự hóa PHP gốc. Tuy nhiên, vì kiểu dữ liệu JSON đã trở nên rất phổ biến và nhà PHP Core Teams đã quyết định thêm hỗ trợ cho nó trong từ phiên bản PHP 5.2.

Bây giờ bạn có thể sử dụng các hàm json_encode()json_decode() để tuần tự hóa và hủy tuần tự hóa dữ liệu trong PHP.

Ví dụ về tuần tự hóa dữ liệu trong PHP với json_encode() / json_decode().

Vì định dạng JSON chỉ là dạng văn bản, nó có thể dễ dàng được gửi đến / đi từ một máy chủ và có thể được sử dụng làm định dạng dữ liệu bởi bất kỳ ngôn ngữ lập trình nào.

Hãy xem cách sử dụng json_encode() trong PHP qua ví dụ dưới đây:

<?php 
  
// Một mảng phức tạp
$myvar = array( 
    'Xin chào', 
    123, 
    array(1, 'laptrinhvienphp.com'), 
    'học php'
); 
  
// Tuần tự hóa dữ liệu với JSON
$string = json_encode($myvar); 
  
// In dữ liệu đã được tuần tự hóa
echo $string; 
  
?>

Kết quả khi chạy chương trình là:

["Xin chào",123,[1,"laptrinhvienphp.com"],"học php"]

Chúng ta có thể giải mã dữ liệu được mã hóa trong chương trình trên bằng cách sử dụng hàm json_decode() để lấy mảng phức tạp ban đầu.

Cách giải mã như sau:

<?php

// Một mảng phức tạp
$myvar = array( 
    'Xin chào', 
    123, 
    array(1, 'laptrinhvienphp.com'), 
    'học php'
);

// Tuần tự hóa dữ liệu
$string = json_encode($myvar); 
  
// Giải mã chuỗi được mã hóa ở trên
$newvar = json_decode($string); 
   
// In dữ liệu đã được giải mã  
print_r($newvar); 
  
?> 

Kết quả đầu ra là:

Array
(
    [0] => Xin chào
    [1] => 123
    [2] => Array
        (
            [0] => 1
            [1] => laptrinhvienphp.com
        )

    [3] => học php
)

Lưu ý: Mã hóa / Giải mã JSON nhỏ gọn hơn và tốt nhất là tương thích với Javascript và nhiều ngôn ngữ khác. Tuy nhiên, đối với các đối tượng phức tạp, một số thông tin có thể bị mất.

Bạn đã hiểu cách tuần tự hóa dữ liệu chưa?

Đây là chỉ một cách đơn giản nhất giúp bạn hiểu các chúng ta tuần tự hóa dữ liệu trong PHP.

Thực tế sử dụng sẽ cần tình huống cụ thể và yêu cầu cụ thể để có được kết quả như mong muốn.

Chúc bạn học lập trình PHP tốt hơn.

>> Tham khảo: Khóa học PHP (Toàn diện: Sáng diện, trưa diện, tối diện)

PHPDEV

Có thể bạn muốn xem

Thuộc tính Background trong CSS

Trong bài hướng dẫn tự học CSS này, bạn sẽ tìm hiểu cách thiết lập nền / thuộc tính background cho một phần tử bằng CSS.

Thuộc tính Màu sắc trong CSS

Trong bài hướng dẫn tự học CSS này, bạn sẽ tìm hiểu các phương pháp định nghĩa các giá trị màu khác nhau trong CSS theo 3 cách khác nhau

Leave a reply

Please enter your comment!
Please enter your name here