ในแอปพลิเคชัน 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() แรก เราเพียงแค่พิมพ์วัตถุ แต่ในกรณีที่สอง เรากำลังพิมพ์คำใบ้วัตถุลงในอาร์เรย์ด้วยความช่วยเหลือของขั้นตอนการพิมพ์คำใบ้