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