JSON เป็น PHP Array

วางเอกสาร JSON แล้วได้ PHP array literal ที่จัดรูปแบบสำหรับไฟล์ซอร์ส .php, ไวยากรณ์ array แบบสั้น ([...]) การเยื้องที่ถูกต้อง สตริงใส่เครื่องหมายคำพูดอย่างถูกต้อง ออบเจกต์ที่ซ้อนกันจะกลายเป็นอาร์เรย์แบบเชื่อมโยง ส่วนอาร์เรย์ยังคงเป็นแบบมีดัชนี มีประโยชน์สำหรับการฝังฟิกซ์เจอร์ (fixture) ของ API ในการทดสอบ หรือการเติมค่าเริ่มต้นให้ไฟล์ config

วิธีแปลง JSON เป็น PHP

  1. 1

    วาง JSON

    JSON ที่ถูกต้องใดก็ได้: object, array, ซ้อนลึก

  2. 2

    เลือกไวยากรณ์

    สั้น `[...]` (PHP 5.4+) หรือยาว `array(...)` (ไม่ค่อยจำเป็นแล้ว)

  3. 3

    เลือกเครื่องหมายคำพูดของสตริง

    เครื่องหมายคำพูดเดี่ยว (ไม่มี interpolation escape apostrophe) หรือเครื่องหมายคำพูดคู่ (อนุญาต `$` interpolation: มักไม่ใช่สิ่งที่คุณต้องการสำหรับข้อมูล)

  4. 4

    คัดลอก array

    วางลงในไฟล์ `.php` ของคุณ กำหนดให้ `return` หรือห่อใน `config([...])`

ตัวอย่าง

อินพุต:

{ "app": { "name": "Hyperion", "debug": true, "hosts": ["h1.example.com", "h2.example.com"] } }

เอาต์พุต (ไวยากรณ์สั้น เครื่องหมายคำพูดเดี่ยว):

[
    'app' => [
        'name' => 'Hyperion',
        'debug' => true,
        'hosts' => [
            'h1.example.com',
            'h2.example.com',
        ],
    ],
]

การจับคู่ชนิดข้อมูล

JSON PHP
สตริง สตริง (เครื่องหมายคำพูดเดี่ยว)
จำนวนเต็ม int
ตัวเลข (ทศนิยม) float
บูลีน true / false
null null
อาร์เรย์ (JSON) อาร์เรย์แบบมีดัชนี
ออบเจกต์ (JSON) อาร์เรย์แบบเชื่อมโยง

เมื่อใดควรใช้อาร์เรย์แบบเชื่อมโยงเทียบกับแบบมีดัชนี

PHP มีอาร์เรย์ชนิดเดียวที่มีพฤติกรรมทั้งสองแบบ ส่วน JSON แยกแยะ object และ array อย่างชัดเจน ดังนั้นการจับคู่จึงเป็นดังนี้:

  • {} → อาร์เรย์แบบเชื่อมโยง (['key' => value])
  • [] → อาร์เรย์แบบมีดัชนี ([value, value])

ตัวสร้างรักษาการแยกแยะไว้เสมอ การผสมทั้งสองใน PHP ถูกต้องตามกฎแต่สร้างความสับสน

ข้อควรระวังเฉพาะ PHP

  • คีย์ที่เป็นสตริงตัวเลข PHP cast "42" ให้เป็นคีย์จำนวนเต็ม 42 ใน array หาก JSON ของคุณใช้สตริงตัวเลขเป็นคีย์และคุณต้องการให้เป็นสตริง การวนกลับ array_combine จะไม่รักษาไว้
  • จำนวนเต็มขนาดใหญ่ JSON สามารถเก็บจำนวนเต็มที่ใหญ่กว่า PHP_INT_MAX บน build แบบ 32 บิต ตัวสร้างจะเตือนเมื่อสิ่งนั้นอาจเกิดขึ้น
  • UTF-8 สตริง PHP เป็นลำดับไบต์ ตัวสร้างแสดง UTF-8 ตรงตัว ตรวจสอบให้แน่ใจว่าไฟล์ .php ของคุณบันทึกเป็น UTF-8 โดยไม่มี BOM

กรณีการใช้งาน

  • ไฟล์ config: ทั้ง Laravel และ Symfony ใช้ config แบบ PHP-array การวาง config แบบ JSON สไตล์ vendor ใช้ได้ดี
  • fixture การทดสอบ: fixture ของ PHPUnit สะอาดกว่าเมื่อเป็น array มากกว่าไฟล์ JSON ที่โหลดตอนรันไทม์
  • seed: database seeder ใน Laravel มักเริ่มจาก JSON dump และกลายเป็น PHP array

ข้อผิดพลาดที่พบบ่อย

  • การวนกลับ PHP array ไปเป็น JSON json_encode ปฏิบัติต่อ associative array เป็น object และ indexed array เป็น array หากคุณผสมกัน (['key' => 'val', 0 => 'x']) คุณจะได้ object ตอนออก รักษา array รูปแบบ JSON ให้เป็นรูปแบบ JSON
  • เครื่องหมายคำพูดคู่กับ apostrophe สตริง PHP เครื่องหมายคำพูดเดี่ยวต้อง escape \' สตริงเครื่องหมายคำพูดคู่ต้อง escape \\" และ ตัวแปรจะถูก interpolate โดยไม่ตั้งใจหากคุณไม่ระวัง ยึดเครื่องหมายคำพูดเดี่ยวสำหรับข้อมูล
  • ลืม trailing comma PHP อนุญาตตั้งแต่ PHP 7.3 และทำให้ diff สะอาดขึ้น ตัวสร้างเพิ่มให้เป็นค่าเริ่มต้น

คำถามที่พบบ่อย

ไวยากรณ์สั้น ([...]) มีให้ใช้ตั้งแต่ PHP 5.4 และเป็นตัวเลือกที่เป็นสำนวนสำหรับโค้ดสมัยใหม่ทั้งหมด ไวยากรณ์ยาว (array(...)) จำเป็นเฉพาะสำหรับโค้ดที่ต้องรันบน PHP 5.3 หรือเก่ากว่า, โดยพื้นฐานคือระบบเก่า

ได้ ไฟล์ config ของ Laravel เป็น PHP array ธรรมดาที่ return จากไฟล์ วางเอาต์พุตของตัวสร้างหลัง return และบันทึกใน config/

สตริง PHP เครื่องหมายคำพูดเดี่ยวไม่ interpolate ตัวแปรหรือ escape sequence (ยกเว้น \' และ \\) สำหรับ literal ข้อมูล สิ่งนี้เร็วกว่าและปลอดภัยกว่า เครื่องหมายคำพูดคู่สำคัญเฉพาะเมื่อคุณต้องการ \n, \t หรือ $variable ภายในสตริง

ไม่, มันให้ array literal ห่อด้วย return, const หรือ property ของคลาสด้วยตัวคุณเองตามต้องการ การรักษาเอาต์พุตให้เล็กทำให้ประกอบได้

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

ตัวตรวจสอบอีเมล

ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ

เครื่องมือสร้าง EditorConfig

สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น