คือความแตกต่างระหว่างสิ่งที่var_dump, var_exportและprint_r?
คือความแตกต่างระหว่างสิ่งที่var_dump, var_exportและprint_r?
คำตอบ:
var_dumpมีไว้เพื่อวัตถุประสงค์ในการดีบัก var_dumpพิมพ์ผลลัพธ์เสมอ
// var_dump(array('', false, 42, array('42')));
array(4) {
[0]=> string(0) ""
[1]=> bool(false)
[2]=> int(42)
[3]=> array(1) {[0]=>string(2) "42")}
}
print_rมีไว้เพื่อจุดประสงค์ในการดีบักเช่นกัน แต่ไม่รวมประเภทของสมาชิก เป็นความคิดที่ดีที่จะใช้หากคุณทราบประเภทขององค์ประกอบในอาร์เรย์ของคุณ แต่อาจทำให้เข้าใจผิดได้ print_rโดยค่าเริ่มต้นจะพิมพ์ผลลัพธ์ แต่อนุญาตให้ส่งคืนเป็นสตริงแทนโดยใช้$returnพารามิเตอร์ที่เป็นทางเลือก
Array (
[0] =>
[1] =>
[2] => 42
[3] => Array ([0] => 42)
)
var_exportพิมพ์รหัส php ที่ถูกต้อง มีประโยชน์หากคุณคำนวณค่าบางค่าและต้องการให้ผลลัพธ์เป็นค่าคงที่ในสคริปต์อื่น โปรดทราบว่าvar_exportไม่สามารถจัดการกับรอบการอ้างอิง / อาร์เรย์แบบเรียกซ้ำได้ในขณะที่var_dumpและprint_rตรวจสอบสิ่งเหล่านี้ var_exportโดยค่าเริ่มต้นจะพิมพ์ผลลัพธ์ แต่อนุญาตให้ส่งคืนเป็นสตริงแทนโดยใช้$returnพารามิเตอร์ที่เป็นทางเลือก
array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
)
โดยส่วนตัวแล้วฉันคิดว่าvar_exportเป็นการประนีประนอมที่ดีที่สุดของความกระชับและแม่นยำ
var_exportเนื่องจากธรรมชาติของมันจะตายซ้ำอย่างน่าสยดสยองบนอาร์เรย์แบบวนซ้ำ print_rและvar_dump(แม้ว่าจะไม่แน่ใจอย่างสมบูรณ์เกี่ยวกับเรื่องหลังเนื่องจากฉันมักจะไม่ใช้มัน) ไม่มีปัญหานั้น var_export($_GLOBALS);ตัวอย่างเช่นอย่า(ซึ่งมีตัวมันเอง) :)
var_dumpเอาท์พุท น่าเสียดายที่ไม่อนุญาตให้ส่งคืนเอาต์พุตเป็นสตริง ด้วยเหตุนี้ฉันจึงสามารถเชื่อมโยงกับความรู้สึกของ @ iconoclast ในความคิดเห็นด้านบน แต่ต้องเลือกvar_exportมากกว่าvar_dumpสำหรับกรณีการใช้งานนี้เป็นที่ยอมรับสำหรับฉัน เพื่อความสมบูรณ์โปรดสังเกตคำขอคุณลักษณะที่เกี่ยวข้องนี้
var_dumpและvar_exportเกี่ยวข้องเช่นนี้ (จากคู่มือ )
var_export () รับข้อมูลที่มีโครงสร้างเกี่ยวกับตัวแปรที่กำหนด มันคล้ายกับ var_dump () โดยมีข้อยกเว้นหนึ่ง: การแสดงที่ส่งคืนเป็นโค้ด PHP ที่ถูกต้อง
พวกเขาแตกต่างจากprint_rที่var_dumpข้อมูลการส่งออกมากขึ้นเช่นประเภทข้อมูลและขนาดขององค์ประกอบ