คือความแตกต่างระหว่างสิ่งที่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
ข้อมูลการส่งออกมากขึ้นเช่นประเภทข้อมูลและขนาดขององค์ประกอบ