หมวดหมู่: Web

PHP: print_r tipsPHP: print_r tips

การใช้คำสั่ง print_r($values) เป็นเทคนิคพื้นฐานที่โปรแกรมเมอร์ PHP ทุกคนควรทราบ เพราะมันคือวิธีที่ง่ายและเร็วที่สุดในการ “ส่อง” ดูโครงสร้างของตัวแปรประเภท Array หรือ Object ครับ


ทำไมต้องเพิ่ม <pre> ?

โดยปกติแล้ว หากเราใช้ print_r($values); เพียงอย่างเดียว PHP จะแสดงผลออกมาเป็นบรรทัดเดียวพืด ซึ่งอ่านยากมากในหน้า Browser การครอบด้วย Tag HTML <pre> ( Preformatted text ) จะช่วยรักษาการย่อหน้า ( Indentation ) และการเว้นบรรทัด ทำให้เราเห็นโครงสร้างข้อมูลที่ชัดเจน


เปรียบเทียบการแสดงผล

แบบไม่ใส่

Array ( [0] => Apple [1] => Banana [2] => Orange )

แบบใส่

Array
(
    [0] => Apple
    [1] => Banana
    [2] => Orange
)

วิธีการเขียนที่ถูกต้อง

ใน PHP เราสามารถเขียนได้หลายรูปแบบเพื่อให้ได้ผลลัพธ์เดียวกัน ดังนี้

  1. แบบใช้เครื่องหมาย Comma ( แนะนำ )
    วิธีนี้มีประสิทธิภาพสูงเพราะ echo สามารถรับค่าหลายตัวแปรได้โดยไม่ต้องนำสตริงมาต่อกันก่อน
    หมายเหตุ: การใส่ true ในพารามิเตอร์ตัวที่สองของ print_r จะเป็นการสั่งให้คืนค่าเป็น String แทนการแสดงผลทันที
    echo '<pre>', print_r($values, true), '</pre>';
    
  2. แบบเขียนแยกบรรทัด ( อ่านง่ายสำหรับมือใหม่ )
    echo '<pre>';
    print_r($values);
    echo '</pre>';
    

เทคนิคเพิ่มเติม: สร้างเป็นฟังก์ชัน Debug

เพื่อให้ชีวิตง่ายขึ้น ไม่ต้องพิมพ์ยาวๆ ทุกครั้ง แนะนำให้สร้างฟังก์ชันส่วนตัวไว้ใช้ในโปรเจกต์ครับ

function dd($data) {
    echo '<style>
        pre {
            background-color: #f4f4f4;
            border: 1px solid #ccc;
            padding: 10px;
            border-radius: 5px;
            color: #333;
            font-family: "Courier New", Courier, monospace;
        }
    </style>';
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    die(); // หยุดการทำงานของ Script ทันทีหลังจาก Debug
}

// วิธีใช้งาน
$user_data = ['id' => 1, 'name' => 'Somchai', 'role' => 'Admin'];
dd($user_data);

ข้อควรระวัง

  • Security: ห้ามใช้คำสั่งนี้ในหน้าเว็บไซต์ที่เปิดใช้งานจริง ( Production ) เพราะอาจทำให้ข้อมูลโครงสร้าง Database หรือข้อมูลส่วนตัวหลุดออกไปสู่ผู้ใช้งานได้
  • Alternatives: หากต้องการข้อมูลที่ละเอียดกว่านี้ ( เช่น ประเภทข้อมูล int, string, boolean ) แแนะนำให้ใช้คำสั่ง var_dump($values); แทนครับ

การ Debug เป็นหัวใจสำคัญของการเขียนโปรแกรม การใช้เครื่องมือง่ายๆ อย่าง print_r ร่วมกับ Tag <pre> จะช่วยให้คุณหาจุดผิดพลาดใน Code ได้รวดเร็วขึ้นอย่างแน่นอนครับ!


อ่านเพิ่มเติม