Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

แปลงวัตถุเป็นอาร์เรย์ใน PHP


ในแอปพลิเคชัน PHP เรากำลังทำงานกับข้อมูลในรูปแบบต่างๆ เช่น สตริง อาร์เรย์ อ็อบเจ็กต์ และอื่นๆ...ในแอปพลิเคชันแบบเรียลไทม์ เราอาจจำเป็นต้องอ่านผลลัพธ์ของอ็อบเจกต์ php ในรูปแบบของ associative array เพื่อให้ได้ ผลลัพธ์ที่ต้องการ

ดังนั้นเราจะพูดถึงวิธีการแปลงวัตถุ php เป็นอาเรย์ใน PHP ที่นี่

มาอธิบายว่าอ็อบเจกต์และอาเรย์ใน PHP คืออะไร? ออบเจ็กต์คืออินสแตนซ์ของคลาส หมายความว่าจากคลาสหนึ่ง คุณสามารถสร้างอ็อบเจ็กต์ได้มากมาย มันเป็นเพียงตัวอย่างของชั้นเรียนและมีการจัดสรรหน่วยความจำ ในขณะที่อาร์เรย์ที่ประกอบด้วยสตริงเป็นดัชนีเรียกว่าอาเรย์ ประกอบด้วยคู่คีย์-ค่าในนั้น ซึ่งค่าต่างๆ จะเชื่อมโยงกับคีย์ที่เกี่ยวข้อง

ตอนนี้เรามาพูดถึงวิธีการต่างๆ ในการแปลงวัตถุเป็นอาร์เรย์

วิธีที่ 1:

การใช้เทคนิค json_decode และ json_encode:

เริ่มแรก json_encode() ฟังก์ชันจะคืนค่าสตริงที่เข้ารหัส JSON สำหรับค่าที่กำหนด ฟังก์ชัน json_decode() จะเปลี่ยนเป็นอาร์เรย์ PHP

ตัวอย่าง:

<?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);
?>

ผลลัพธ์:

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" }

คำอธิบาย:

ที่นี่ เราได้สร้าง class student และใน class นั้น เราได้ประกาศฟังก์ชัน __construct() ซึ่งจะดำเนินการเมื่อวัตถุถูกสร้างขึ้น ตัวสร้างได้รับอาร์กิวเมนต์ที่ให้ไว้ในภายหลังเมื่อสร้างวัตถุด้วยความช่วยเหลือของคำหลักใหม่ ในนิพจน์ var_dump() แรก เรากำลังพิมพ์วัตถุ แต่ในกรณีที่สอง เรากำลังแปลงวัตถุเป็นอาร์เรย์โดยใช้เทคนิค json_decode และ json_encode

วิธีที่ 2:

การแปลงวัตถุเป็นอาร์เรย์ด้วยเทคนิคการพิมพ์ดีด:

Typecasting เป็นแนวทางในการใช้ตัวแปรประเภทข้อมูลหนึ่งตัวในประเภทข้อมูลที่แตกต่างกัน และเป็นเพียงการแปลงประเภทข้อมูลที่แน่นอนเท่านั้น

<?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);
?>

ผลลัพธ์:

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" }

คำอธิบาย:

ที่นี่ เราได้สร้างคลาส "bag" และในคลาสนั้น เราได้ประกาศฟังก์ชัน __construct() ซึ่งจะถูกดำเนินการเมื่อสร้างอ็อบเจกต์ ตัวสร้างได้รับอาร์กิวเมนต์ที่ให้ไว้ในภายหลังเมื่อสร้างวัตถุด้วยความช่วยเหลือของคำหลักใหม่ ในนิพจน์ var_dump() แรก เราเพียงแค่พิมพ์วัตถุ แต่ในกรณีที่สอง เรากำลังพิมพ์คำใบ้วัตถุลงในอาร์เรย์ด้วยความช่วยเหลือของขั้นตอนการพิมพ์คำใบ้