Computer >> Máy Tính >  >> Lập trình >> PHP

Chuyển đổi đối tượng thành một mảng trong PHP.

Trong một ứng dụng PHP, chúng ta đang làm việc với dữ liệu ở nhiều định dạng khác nhau như chuỗi, mảng, đối tượng hoặc hơn thế nữa ... Trong một ứng dụng thời gian thực, chúng ta có thể cần đọc kết quả đối tượng php ở dạng một mảng kết hợp để lấy đầu ra mong muốn.

Vì vậy, chúng ta sẽ thảo luận ở đây về cách chuyển đổi một đối tượng php thành một mảng kết hợp trong PHP.

Hãy giải thích một đối tượng và mảng kết hợp trong PHP là gì? Một đối tượng là một thể hiện của một lớp có nghĩa là từ một lớp, bạn có thể tạo nhiều đối tượng. Nó chỉ đơn giản là một mẫu vật của một lớp và được cấp phát bộ nhớ. Mặt khác, một mảng bao gồm chuỗi làm chỉ mục được gọi là mảng kết hợp. Nó chứa một cặp khóa-giá trị trong đó, trong đó các giá trị được liên kết với các khóa tương ứng của chúng.

Bây giờ chúng ta hãy thảo luận về các phương pháp khác nhau để chuyển đổi đối tượng thành một mảng.

Phương pháp 1:

Sử dụng kỹ thuật json_decode và json_encode:

Ban đầu, hàm json_encode () trả về một chuỗi được mã hóa JSON cho một giá trị nhất định. Hàm json_decode () thay đổi nó thành một mảng PHP.

Ví dụ:

<?php
   class student {
      public function __construct($firstname, $lastname) {
         $this->firstname = $firstname;
         $this->lastname = $lastname;
      }
   }
   $myObj = new student("Alex", "Stokes");
   echo "Before conversion:".'</br>';
   var_dump($myObj);
   $myArray = json_decode(json_encode($myObj), true);
   echo "After conversion:".'</br>';
   var_dump($myArray);
?>

Đầu ra:

Before conversion:
object(student)#1 (2) { ["firstname"]=> string(4) "Alex" ["lastname"]=> string(6) "Stokes" }
After conversion:
array(2) { ["firstname"]=> string(4) "Alex" ["lastname"]=> string(6) "Stokes" }

Giải thích:

Ở đây chúng ta đã tạo một sinh viên của lớp và bên trong lớp đó, chúng ta đã khai báo một hàm __construct (), được thực thi khi đối tượng được tạo. Hàm tạo nhận các đối số sau này được cung cấp khi tạo đối tượng với sự trợ giúp của từ khóa mới. Trong biểu thức var_dump () đầu tiên, chúng tôi đang in đối tượng, nhưng trong trường hợp thứ hai, chúng tôi đang chuyển đổi đối tượng thành một mảng với sự trợ giúp của kỹ thuật json_decode và json_encode.

Phương pháp 2:

Chuyển đổi một đối tượng thành một mảng bằng kỹ thuật đánh máy:

Đánh máy là cách tiếp cận để sử dụng một biến kiểu dữ liệu thành kiểu dữ liệu khác và nó chỉ đơn giản là sự biến đổi chính xác của một kiểu dữ liệu.

<?php
   class bag {
      public function __construct( $item1, $item2, $item3){
         $this->item1 = $item1;
         $this->item2 =$item2;
         $this->item3 = $item3;
      }
   }
   $myBag = new bag("Books", "Ball", "Pens");
   echo "Before conversion :".'</br>';
   var_dump($myBag);
   $myBagArray = (array)$myBag;
   echo "After conversion :".'</br>';
   var_dump($myBagArray);
?>

Đầu ra:

Before conversion :
object(bag)#1 (3) { ["item1"]=> string(5) "Books" ["item2"]=> string(4) "Ball" ["item3"]=> string(4) "Pens" }
After conversion:
array(3) { ["item1"]=> string(5) "Books" ["item2"]=> string(4) "Ball" ["item3"]=> string(4) "Pens" }

Giải thích:

Ở đây chúng ta đã tạo một lớp "bag" và bên trong lớp đó, chúng ta đã khai báo một hàm __construct (), hàm này được thực thi khi đối tượng được tạo. Hàm tạo nhận các đối số sau này được cung cấp khi tạo đối tượng với sự trợ giúp của từ khóa mới. Trong biểu thức var_dump () đầu tiên, chúng ta chỉ in đối tượng, nhưng trong trường hợp thứ hai, chúng ta đang gõ đối tượng vào một mảng với sự trợ giúp của thủ tục gợi ý kiểu.