เพื่อตอบคำถามจริง:
เหตุใด PHP จึงเปลี่ยน JSON Object ให้เป็นคลาส
ดูผลลัพธ์ของ JSON ที่เข้ารหัสให้ละเอียดยิ่งขึ้นฉันได้ขยายตัวอย่างที่ OP ให้ข้อมูลเล็กน้อย:
$array = array(
'stuff' => 'things',
'things' => array(
'controller', 'playing card', 'newspaper', 'sand paper', 'monitor', 'tree'
)
);
$arrayEncoded = json_encode($array);
echo $arrayEncoded;
//prints - {"stuff":"things","things":["controller","playing card","newspaper","sand paper","monitor","tree"]}
รูปแบบ JSON ได้มาจากมาตรฐานเดียวกันกับ JavaScript ( ECMAScript Programming Language Standard ) และหากคุณดูรูปแบบดูเหมือน JavaScript เป็นออบเจ็กต์ JSON ( {}
= ออบเจ็กต์ ) ที่มีคุณสมบัติ "stuff" พร้อมค่า "สิ่งต่างๆ" และมีคุณสมบัติ "things" โดยค่าของมันเป็นอาร์เรย์ของสตริง ( []
= array )
JSON (เป็น JavaScript) ไม่ทราบว่าเชื่อมโยงอาร์เรย์เฉพาะอาร์เรย์ที่จัดทำดัชนีเท่านั้น ดังนั้นเมื่อ JSON เข้ารหัสอาร์เรย์ PHP เชื่อมโยงสิ่งนี้จะส่งผลให้สตริง JSON ที่มีอาร์เรย์นี้เป็น "ออบเจ็กต์"
ตอนนี้เรากำลังถอดรหัส JSON json_decode($arrayEncoded)
อีกครั้งโดยใช้ ฟังก์ชันถอดรหัสไม่ทราบว่าสตริง JSON นี้มาจากที่ใด (อาร์เรย์ PHP) จึงถอดรหัสเป็นวัตถุที่ไม่รู้จักซึ่งอยู่stdClass
ใน PHP ดังที่คุณจะเห็นอาร์เรย์ของสตริง "things" จะถอดรหัสเป็นอาร์เรย์ PHP ที่จัดทำดัชนี
ดูเพิ่มเติมที่:
ขอบคุณhttps://www.randomlists.com/thingsสำหรับ 'สิ่งต่างๆ'