ความแตกต่างระหว่างvar_dump()
และprint_r()
ในแง่ของการแยกอาร์เรย์เป็นสตริงคืออะไร?
ความแตกต่างระหว่างvar_dump()
และprint_r()
ในแง่ของการแยกอาร์เรย์เป็นสตริงคืออะไร?
คำตอบ:
var_dump
แสดงฟังก์ชั่นที่มีโครงสร้างข้อมูลเกี่ยวกับตัวแปร / นิพจน์รวมทั้งประเภทและมูลค่า อาร์เรย์มีการสำรวจซ้ำด้วยค่าที่เยื้องเพื่อแสดงโครงสร้าง นอกจากนี้ยังแสดงค่าอาร์เรย์และคุณสมบัติของวัตถุที่อ้างอิง
print_r()
แสดงข้อมูลเกี่ยวกับตัวแปรในทางที่สามารถอ่านได้โดยมนุษย์ ค่าอาร์เรย์จะถูกนำเสนอในรูปแบบที่แสดงถึงคีย์และองค์ประกอบองค์ประกอบสัญกรณ์ที่คล้ายกันใช้สำหรับวัตถุ
ตัวอย่าง:
$obj = (object) array('qualitypoint', 'technologies', 'India');
var_dump($obj)
จะแสดงผลลัพธ์ด้านล่างในหน้าจอ
object(stdClass)#1 (3) {
[0]=> string(12) "qualitypoint"
[1]=> string(12) "technologies"
[2]=> string(5) "India"
}
และprint_r($obj)
จะแสดงผลด้านล่างในหน้าจอ
stdClass Object (
[0] => qualitypoint
[1] => technologies
[2] => India
)
ข้อมูลเพิ่มเติม
โดยทั่วไป print_r( )
ผลลัพธ์ที่ได้จะดีกว่าอ่านได้กระชับและอ่านง่ายกว่ามนุษย์อ่านได้ แต่ไม่สามารถแสดงประเภทข้อมูลได้
ด้วยprint_r()
คุณสามารถเก็บเอาท์พุทเป็นตัวแปร:
$output = print_r($array, true);
ซึ่งvar_dump()
ไม่สามารถทำได้ ยังvar_dump()
สามารถแสดงประเภทข้อมูล
var_dump()
จะแสดงประเภทของสิ่งต่างๆรวมถึงสิ่งที่อยู่ในนั้น
ดังนั้นคุณจะได้รับ => (string)"var"
ตัวอย่างอยู่ที่นี่
print_r()
จะเพิ่งเอาท์พุทเนื้อหา
จะส่งออก => "var"
ตัวอย่างอยู่ที่นี่
var_dump(0.0);
ที่เอาท์พุทfloat(0)
VS print_r(0.0);
ซึ่งเอาท์พุท0
(จึงนำไปสู่ความสับสนประเภทเป็นไปได้) ...
หากคุณถามว่าคุณควรใช้อะไรฉันมักจะใช้print_r()
เพื่อแสดงค่าและvar_dump()
เมื่อมีปัญหากับประเภทตัวแปร
var_dump
แสดงข้อมูลที่มีโครงสร้างเกี่ยวกับวัตถุ / ตัวแปร ซึ่งรวมถึงประเภทและค่า เช่นเดียวกับprint_r
อาร์เรย์จะเกิดซ้ำผ่านและเยื้อง
print_r
แสดงข้อมูลที่มนุษย์สามารถอ่านได้เกี่ยวกับค่าด้วยรูปแบบการนำเสนอคีย์และองค์ประกอบสำหรับอาร์เรย์และวัตถุ
สิ่งที่สำคัญที่สุดที่ควรสังเกตคือvar_dump
ประเภทของเอาต์พุตและค่าในขณะที่print_r
ไม่มี
ความแตกต่างที่สำคัญระหว่างvar_dump
และprint_r
ทั้งฟังก์ชั่นทิ้งข้อมูลเกี่ยวกับตัวแปรแต่var_dump
มีพารามิเตอร์หลายตัวที่จะถูกทิ้งซึ่งprint_r
สามารถนำพารามิเตอร์สองตัวออกมาซึ่งพารามิเตอร์ตัวแรกคือตัวแปรที่คุณต้องการดัมพ์และตัวที่สองคือค่าบูลีน
var_dump
ไม่สามารถส่งคืนค่าใด ๆ ก็สามารถถ่ายโอนข้อมูลเท่านั้น / พิมพ์ค่าที่เป็น print_r สามารถส่งกลับข้อมูลตัวแปรถ้าเราตั้งค่าพารามิเตอร์ที่สองของการprint_r
ที่จะเป็นจริง ค่าที่ส่งคืนของprint_r
จะอยู่ในรูปแบบสตริง
ข้อมูลที่พิมพ์โดยprint_r
มีมากขึ้นในรูปแบบที่สามารถอ่านได้ในขณะที่var_dump
พิมพ์ค่าดิบ
print_r
ฟังก์ชั่นสามารถใช้งานได้ในหลายบริบทซึ่งvar_dump
สามารถใช้ในวัตถุประสงค์การดีบักส่วนใหญ่เนื่องจากไม่สามารถคืนค่าได้
ob_start(); var_dump($var); $dump=ob_get_clean();
ฉันมักจะแนะนำให้ใส่ผลลัพธ์ของ var_dump () หรือ printr ลงในแท็กล่วงหน้าเมื่อส่งออกไปยังเบราว์เซอร์
print "<pre>";
print_r($dataset);
print "</pre>";
จะให้ผลลัพธ์ที่อ่านง่ายขึ้น
var_dump($var)
แสดงรายละเอียดเชิงลึกโดยการให้รายละเอียดเพิ่มเติมของ
ด้วยอาร์เรย์ขนาดใหญ่ print_r สามารถแสดงข้อมูลมากกว่าที่เป็นประโยชน์ คุณสามารถตัดให้สั้นลงได้เช่นนี้โดยแสดงอักขระ 2,000 ตัวแรกหรือหลายตัวก็ได้
echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";
var_dump (): -
ตัวอย่าง: -
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>
ผลลัพธ์: -
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
print_r (): -
ตัวอย่าง: -
<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>
เอาท์พุท: -
<pre>
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
</pre>
ob_start(); var_dump($var); $dump=ob_get_clean();
print_r () และ var_dump () เป็นฟังก์ชันการดีบัก Array ที่ใช้ใน PHP เพื่อการดีบัก print_r () ฟังก์ชันส่งคืนคีย์อาร์เรย์และสมาชิกเป็น Array ([คีย์] = ค่า) ในขณะที่ฟังก์ชัน var_dump () ส่งกลับรายการอาร์เรย์ด้วยคีย์อาร์เรย์ที่มีชนิดข้อมูลและความยาวเช่น Array (array_length) {[0] = สตริง (1) 'a'}
เราสามารถส่งผ่านพารามิเตอร์หลายตัวด้วย var_dump เช่น:
var_dump("array1",$array1,"array2",$array2);