ผมใช้echo
และมากและแทบจะไม่เคยใช้print_r
print
ผมรู้สึกecho
เป็นแมโครและเป็นนามแฝงของprint_r
var_dump
แต่นั่นไม่ใช่วิธีมาตรฐานในการอธิบายความแตกต่าง
ผมใช้echo
และมากและแทบจะไม่เคยใช้print_r
print
ผมรู้สึกecho
เป็นแมโครและเป็นนามแฝงของprint_r
var_dump
แต่นั่นไม่ใช่วิธีมาตรฐานในการอธิบายความแตกต่าง
คำตอบ:
print
และecho
จะมากหรือน้อยเหมือนกัน; พวกเขาทั้งสองภาษาสร้างที่แสดงสตริง ความแตกต่างคือบอบบาง: print
มีค่าตอบแทน 1 ดังนั้นจึงสามารถใช้ในการแสดงออกในขณะที่echo
มีvoid
ประเภทผลตอบแทน echo
สามารถใช้พารามิเตอร์หลายตัวได้แม้ว่าการใช้งานจะหายาก จะเร็วกว่าเล็กน้อยecho
print
(โดยส่วนตัวแล้วฉันมักจะใช้echo
ไม่เคยprint
)
var_dump
พิมพ์ดัมพ์รายละเอียดของตัวแปรรวมถึงชนิดและชนิดของรายการย่อยใด ๆ (ถ้าเป็นอาร์เรย์หรือวัตถุ) print_r
พิมพ์ตัวแปรในรูปแบบที่มนุษย์อ่านได้มากขึ้น: ไม่มีการอ้างถึงสตริง, ไม่พิมพ์ข้อมูล, ขนาดอาร์เรย์ไม่ได้รับ, เป็นต้น
var_dump
โดยปกติแล้วจะมีประโยชน์มากกว่าprint_r
เมื่อทำการดีบั๊กในประสบการณ์ของฉัน มันมีประโยชน์อย่างยิ่งเมื่อคุณไม่รู้ค่า / ประเภทที่คุณมีในตัวแปร พิจารณาโปรแกรมทดสอบนี้:
$values = array(0, 0.0, false, '');
var_dump($values);
print_r ($values);
ด้วยprint_r
คุณไม่สามารถบอกความแตกต่างระหว่าง0
และ0.0
หรือfalse
และ''
:
array(4) {
[0]=>
int(0)
[1]=>
float(0)
[2]=>
bool(false)
[3]=>
string(0) ""
}
Array
(
[0] => 0
[1] => 0
[2] =>
[3] =>
)
เสียงสะท้อน
ไม่มีค่าตอบแทน
เช่น echo "String 1", "String 2"
พิมพ์
ส่งคืน1
ดังนั้นจึงสามารถใช้ในการแสดงออก
เช่น print "Hello"
หรือ, if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
อื่นเพื่อยกตัวอย่างเช่นมันยังพิมพ์ประเภทของค่าvar_export ()
print_r()
และvar_dump()
- ผลลัพธ์ที่ได้คือโค้ด PHP ที่ถูกต้อง!หมายเหตุ:
print
สามารถใช้ในนิพจน์ได้ แต่ฉันแนะนำให้คนหลีกเลี่ยงการทำเช่นนั้นเพราะมันไม่ดีต่อการอ่านโค้ด (และเพราะมันไม่น่าจะมีประโยชน์เลย) กฎที่มีลำดับความสำคัญเมื่อมีการโต้ตอบกับตัวดำเนินการอื่นอาจทำให้สับสนได้เช่นกัน echo
ด้วยเหตุนี้ผมเองไม่เคยมีเหตุผลที่จะใช้มันมากกว่าecho
และprint
เป็นภาษาสร้างprint_r()
และvar_dump()
/ var_export()
เป็นฟังก์ชั่นปกติ คุณไม่จำเป็นต้องใช้วงเล็บในการใส่อาร์กิวเมนต์ให้กับecho
หรือprint
(และถ้าคุณใช้มันมันจะถูกใช้เหมือนในนิพจน์)var_export()
ผลตอบแทน PHP eval()
รหัสที่ถูกต้องช่วยให้ค่าที่จะอ่านกลับมาอาศัยนี้รหัสการผลิตอาจจะทำให้มันง่ายที่จะแนะนำช่องโหว่ความปลอดภัยเนื่องจากความต้องการในการใช้งาน จะเป็นการดีกว่าถ้าใช้รูปแบบเช่น JSON แทนเพื่อจัดเก็บและอ่านค่ากลับ ความเร็วจะเทียบเคียงecho $a, $b;
ไวยากรณ์เมื่อคุณสามารถทำได้echo $a . $b;
: ถ้า $ a หรือ $ b เป็นสตริงที่มีขนาดใหญ่จริงๆแล้วหลังจะใช้หน่วยความจำเพิ่มเติมและเวลาในการสร้างรุ่นที่ต่อกันของสตริงในหน่วยความจำก่อน สามารถเริ่มการส่งออกไปยังเบราว์เซอร์
echo $a; echo $b;
เช่นกัน
เพียงเพื่อเพิ่มคำตอบของจอห์น , echo
ควรจะเป็นเพียงคนเดียวที่คุณใช้ในการพิมพ์เนื้อหาไปยังหน้า
print
ช้ากว่าเล็กน้อย var_dump()
และprint_r()
ควรใช้เพื่อแก้ไขข้อบกพร่องเท่านั้น
นอกจากนี้ยังมีมูลค่าการกล่าวขวัญว่าprint_r()
และvar_dump()
จะสะท้อนโดยค่าเริ่มต้นเพิ่มอาร์กิวเมนต์ที่สองไปอย่างน้อยที่ประเมินเป็นจริงจะได้รับมันจะกลับมาแทนเช่นprint_r()
print_r($array, TRUE)
ความแตกต่างระหว่างการสะท้อนและการย้อนกลับคือ:
echo
ไอเอ็นจีและreturn
ไอเอ็นจีคืออะไร?
print_r
Param ที่กลับมาค่อนข้างมากในขณะที่ฉันเขียนโค้ด PHP print_r( $foo, 1 );
แต่ผมมักจะเขียน มันเร็วกว่าในการพิมพ์;) และเกี่ยวกับเรื่องนี้ฉันไม่สนใจเรื่องการอ่านมากนักเนื่องจากฉันพบว่าชื่อprint_r
ไม่ได้อธิบายอะไรมากนัก
var_dump()
ไม่รองรับอาร์กิวเมนต์ที่สองที่อนุญาตให้ส่งคืนค่าเช่นprint_r()
นี้เนื่องจากvar_dump()
สามารถยอมรับอาร์กิวเมนต์หลายตัวเพื่อแสดงผล
echo
ไม่มีประเภทส่งคืน
print
มีประเภทผลตอบแทน
print_r()
เอาท์พุทเป็นรูปแบบ
ความแตกต่างระหว่างecho , print , print_rและvar_dumpนั้นง่ายมาก
เสียงสะท้อน
echoไม่ใช่ฟังก์ชั่น แต่เป็นภาษาสร้างที่ใช้พิมพ์เอาต์พุต มันเร็วกว่าการพิมพ์เล็กน้อย
echo "Hello World"; // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World
$var_1=55;
echo "$var_1"; // this will print 55
echo "var_1=".$var_1; // this will print var_1=55
echo 45+$var_1; // this will print 100
$var_2="PHP";
echo "$var_2"; // this will print PHP
$var_3=array(99,98,97) // Arrays are not possible with echo (loop or index value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index value required)
คุณยังสามารถใช้คำสั่ง echo ด้วยหรือไม่ใช้ parenthese
echo ("Hello World"); // this will print Hello World
พิมพ์
เช่นเดียวกับecho construct printการสร้างภาษาก็ไม่ใช่ฟังก์ชั่นที่แท้จริง ความแตกต่างระหว่างเสียงสะท้อน และการพิมพ์คือการ พิมพ์ ยอมรับการโต้แย้งเพียงครั้งเดียวและการพิมพ์กลับเสมอ 1 ในขณะที่เสียงสะท้อนไม่มีค่าตอบแทน ดังนั้นคำสั่งการพิมพ์สามารถใช้ในการแสดงออก
print "Hello World"; // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1"; // this will print 55
print "var_1=".$var_1; // this will print var_1=55
print 45+$var_1; // this will print 100
$var_2="PHP";
print "$var_2"; // this will print PHP
$var_3=array(99,98,97) // Arrays are not possible with print (loop or index value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index value required)
เช่นเดียวกับก้อง , การพิมพ์ สามารถนำมาใช้โดยมีหรือไม่มีวงเล็บ
print ("Hello World"); // this will print Hello World
print_r
ฟังก์ชันprint_r ()ใช้เพื่อพิมพ์ข้อมูลที่มนุษย์สามารถอ่านได้เกี่ยวกับตัวแปร หากอาร์กิวเมนต์เป็นอาร์เรย์ฟังก์ชันprint_r ()จะพิมพ์คีย์และองค์ประกอบ (เหมือนกันกับวัตถุ)
print_r ("Hello World"); // this will print Hello World
$var_1=55;
print_r ("$var_1"); // this will print 55
print_r ("var_1=".$var_1); // this will print var_1=55
print_r (45+$var_1); // this will print 100
$var_2="PHP";
print_r ("$var_2"); // this will print PHP
$var_3=array(99,98,97) // this will print Array ( [0] => 1 [1] => 2 [2] => 3 )
$var_4=array("P"=>"3","J"=>"4"); // this will print Array ( [P] => 3 [J] => 4 )
var_dump
ฟังก์ชันvar_dumpมักใช้สำหรับการดีบั๊กและพิมพ์ข้อมูล (ประเภทและค่า) เกี่ยวกับตัวแปร / อาร์เรย์ / วัตถุ
var_dump($var_1); // this will print int(5444)
var_dump($var_2); // this will print string(5) "Hello"
var_dump($var_3); // this will print array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
var_dump($var_4); // this will print array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
เสียงสะท้อน :
มันเป็นคำสั่งไม่ใช่ฟังก์ชั่นไม่มีค่าตอบแทน
ไม่จำเป็นต้องใส่วงเล็บ
ไม่ได้พิมพ์ Array
พิมพ์
มันเป็นฟังก์ชั่นจริง
ส่งคืนชนิด 1
จำเป็นต้องใช้วงเล็บ
ไม่ได้พิมพ์ Array
print_r
พิมพ์ในรูปแบบที่มนุษย์อ่านได้
สตริงไม่อยู่ในเครื่องหมายคำพูด
ข้อมูลรายละเอียดของตัวแปรไม่เหมือนประเภทและทั้งหมด
var_dump
ข้อมูลดัมพ์ทั้งหมดของตัวแปรเช่นชนิดขององค์ประกอบและอิลิเมนต์ย่อย
print
จะไม่ได้ฟังก์ชั่นที่แท้จริงมันเป็นภาษาสร้างเช่นเดียวกับก้อง มันยังสามารถใช้เป็นคำสั่ง echo
คือไม่ได้คำสั่งหรือมันสามารถนำมาใช้ใน print
ไม่ไม่จำเป็นต้องมีวงเล็บหรือไม่ก้องอย่างใดอย่างหนึ่งหรือพิมพ์ใช้วงเล็บเช่นฟังก์ชั่นจะ นอกจากนี้คุณยังพลาดหนึ่งในความแตกต่างหลัก - echo ยอมรับหลาย ๆ สายเพื่อ echo คั่นด้วยเครื่องหมายจุลภาค
** Echocan ยอมรับหลายนิพจน์ในขณะที่พิมพ์ไม่ได้ ฟังก์ชัน Print_r () PHP ใช้เพื่อส่งกลับอาร์เรย์ในรูปแบบที่มนุษย์อ่านได้ มันเขียนง่าย ๆ ว่า
![Print_r ($your_array)][1]
echo: echo เป็นโครงสร้างภาษาที่ไม่จำเป็นต้องใช้วงเล็บกับมันและมันสามารถใช้พารามิเตอร์จำนวนใด ๆ และกลับเป็นโมฆะ
void echo (param1,param2,param3.....);
Example: echo "test1","test2,test3";
พิมพ์: มันเป็นโครงสร้างภาษาที่ไม่จำเป็นต้องใช้วงเล็บมันใช้เวลาเพียงหนึ่งพารามิเตอร์และกลับมา
1 always.
int print(param1);
print "test1";
print "test1","test2"; // It will give syntax error
prinf: เป็นฟังก์ชันที่ใช้อย่างน้อยหนึ่งสตริงและรูปแบบของรูปแบบและส่งคืนความยาวของเอาต์พุตสตริง
int printf($string,$s);
$s= "Shailesh";
$i= printf("Hello %s how are you?",$s);
echo $i;
Output : Hello Shailesh how are you?
27
echo returns void so its execution is faster than print and printf
print_r()
ใช้สำหรับการพิมพ์อาร์เรย์ในรูปแบบที่มนุษย์สามารถอ่านได้
print_r () สามารถพิมพ์ค่าออกมาได้ แต่ถ้าพารามิเตอร์พารามิเตอร์ที่สองถูกส่งผ่านและเป็น TRUE - มันจะส่งกลับผลการพิมพ์เป็นสตริงและไม่มีอะไรส่งไปยังเอาต์พุตมาตรฐาน เกี่ยวกับ var_dump หาก XDebug debugger ได้รับการติดตั้งดังนั้นผลลัพธ์ของผลลัพธ์จะถูกจัดรูปแบบในรูปแบบที่อ่านและเข้าใจได้ง่ายขึ้น
พวกเขาทั้งคู่เป็นโครงสร้างภาษา echo จะคืนค่าว่างเปล่าและการคืนค่าการพิมพ์ 1. echo นั้นถือว่าเร็วกว่าการพิมพ์เล็กน้อย