PHP में echo, print, और print_r के बीच क्या अंतर है?


197

मैं उपयोग करता हूं echoऔर print_rबहुत कुछ करता हूं , और लगभग कभी उपयोग नहीं करता print

मुझे लगता है echoकि एक मैक्रो है, और print_rएक उपनाम है var_dump

लेकिन यह मतभेदों को समझाने का मानक तरीका नहीं है।


3
print_r बिल्कुल var_dump का उपनाम नहीं है - यह एक अलग प्रारूप में आउटपुट करता है। विशेष रूप से, var_dump से आउटपुट में प्रत्येक चर का "प्रकार" भी शामिल होता है।
थोमसट्रेटर


जोड़ने के लिए एक और विस्तार और जो उपयोगी हो सकता है, वह यह है कि var_dump बहुत लंबे ग्रंथों को रौंदता है, दिखा रहा है ... और शेष लंबाई का संकेत देता है, उदाहरण के लिए: यहां तक ​​कि ... (लंबाई = 4482) यदि आप गूंज का उपयोग करते हैं तो ऐसा नहीं होता है।
योरदन १५'१

जवाबों:


186

printऔर echoकमोबेश यही स्थिति है; वे दोनों भाषा निर्माण हैं जो स्ट्रिंग प्रदर्शित करते हैं। अंतर सूक्ष्म हैं: print1 का रिटर्न मान है इसलिए इसका उपयोग अभिव्यक्तियों में किया जा सकता है जबकि 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] => 
)

1
भाषा निर्माण क्या है?
OMG

1
@ शोर - यह कुछ ऐसी भाषा है जो एक फ़ंक्शन नहीं है। वे आम तौर पर बहुत तेज़ होते हैं, और सामान्य कार्यों की तरह बिल्कुल काम नहीं करते हैं।
एलेक्स

3
इन टिप्पणियों में पहचाने गए अशुद्धियों को ठीक करने के लिए दो साल बाद संपादित किया गया। सभी को धन्यवाद, मैं 7 जून 10 को सो रहा हूँ। ;-)
जॉन कुगेलमैन


5
वकील के मोबाइल पर जल्दी!
जॉन कुगेलमैन

100

गूंज

  • कॉमा द्वारा अलग किए गए एक या अधिक तारों को आउटपुट करता है
  • कोई वापसी मूल्य नहीं

    जैसे echo "String 1", "String 2"

प्रिंट

  • आउटपुट केवल एक स्ट्रिंग है
  • रिटर्न 1 , इसलिए इसे एक अभिव्यक्ति में इस्तेमाल किया जा सकता है

    जैसे print "Hello"

    या, if ($expr && print "foo")

print_r ()

  • किसी भी एक मूल्य का मानव-पठनीय प्रतिनिधित्व आउटपुट करता है
  • केवल तार नहीं बल्कि सरणियों और वस्तुओं सहित अन्य प्रकारों को स्वीकार करता है, उन्हें पठनीय बनाने के लिए
  • डिबगिंग के समय उपयोगी है
  • यदि दूसरा वैकल्पिक तर्क दिया जाता है तो इसके आउटपुट को रिटर्न वैल्यू (गूंजने के बजाय) के रूप में लौटा सकते हैं

var_dump ()

  • कॉमा द्वारा अलग किए गए एक या अधिक मूल्यों का मानव-पठनीय प्रतिनिधित्व आउटपुट करता है
  • केवल तार नहीं बल्कि सरणियों और वस्तुओं सहित अन्य प्रकारों को स्वीकार करता है, उन्हें पठनीय बनाने के लिए
  • के लिए एक अलग आउटपुट प्रारूप का उपयोग करता है print_r(), उदाहरण के लिए यह मूल्यों के प्रकार को भी प्रिंट करता है
  • डिबगिंग के समय उपयोगी है
  • कोई वापसी मूल्य नहीं

var_export ()

  • किसी भी एक मान का मानव-पठनीय और PHP-निष्पादन योग्य प्रतिनिधित्व आउटपुट करता है
  • केवल तार नहीं बल्कि सरणियों और वस्तुओं सहित अन्य प्रकारों को स्वीकार करता है, उन्हें पठनीय बनाने के लिए
  • दोनों के लिए एक अलग आउटपुट स्वरूप का उपयोग करता है print_r()औरvar_dump() - परिणामी आउटपुट वैध PHP कोड है!
  • डिबगिंग के समय उपयोगी है
  • यदि दूसरा वैकल्पिक तर्क दिया जाता है तो इसके आउटपुट को रिटर्न वैल्यू (गूंजने के बजाय) के रूप में लौटा सकते हैं

टिप्पणियाँ:

  • भले ही printएक अभिव्यक्ति में इस्तेमाल किया जा सकता है, मैं लोगों को ऐसा करने से बचने की सलाह देता हूं, क्योंकि यह कोड पठनीयता के लिए बुरा है (और क्योंकि यह हमेशा उपयोगी होने की संभावना नहीं है)। अन्य ऑपरेटरों के साथ बातचीत करने पर पूर्ववर्ती नियम भी भ्रामक हो सकते हैं। इसके कारण, मेरे पास व्यक्तिगत रूप से कभी भी इसका उपयोग करने का कारण नहीं है echo
  • जबकि echoऔर printभाषा निर्माण हैं, print_r()और var_dump()/ var_export()नियमित कार्य हैं। आपको echoया तर्क को संलग्न करने के लिए कोष्ठक की आवश्यकता नहीं हैprint ( यदि आप उनका उपयोग नहीं करते हैं, तो आपको और यदि वे एक अभिव्यक्ति के रूप में हैं, तो उन्हें माना जाएगा)।
  • हालांकि var_export()वैध PHP कोड लौटाता है, जो मान को बाद में पढ़ने की अनुमति देता है, उत्पादन कोड के लिए इस पर निर्भर होने से उपयोग की आवश्यकता के कारण सुरक्षा कमजोरियों को पेश करना आसान हो सकता है eval()। बेहतर होगा कि मानों को स्टोर करने और बैक मान पढ़ने के बजाय JSON जैसे प्रारूप का उपयोग करें। गति तुलनीय होगी।

3
बस एक त्वरित नोट के बारे में जब आप echo $a, $b;सिंटैक्स चाहते हैं जब आप बस कर सकते हैं echo $a . $b;: यदि या तो $ या $ b वास्तव में बड़े तार हैं तो बाद वाला अतिरिक्त मेमोरी और समय का उपयोग करेगा इससे पहले कि मेमोरी में स्ट्रिंग्स का एक अलग संक्षिप्त संस्करण बना दिया जाए। या तो ब्राउज़र के लिए आउटपुट शुरू कर सकते हैं।
थोमसट्रेटर

बेशक आप अभी echo $a; echo $b;भी उपयोग कर सकते हैं।
थोमसट्रेटर

16

सिर्फ जोड़ने के लिए जॉन के जवाब में , echoकेवल वही होना चाहिए जो आप पृष्ठ पर सामग्री प्रिंट करने के लिए उपयोग करते हैं।

printथोड़ा धीमा है। var_dump()और print_r()केवल डीबग करने के लिए उपयोग किया जाना चाहिए।

इसके अलावा उल्लेख के लायक है print_r()औरvar_dump() डिफ़ॉल्ट रूप से गूंज होगा, print_r()कम से कम एक दूसरा तर्क जोड़ें जो इसे वापस करने के लिए इसे प्राप्त करने के लिए सच का मूल्यांकन करता है, जैसे print_r($array, TRUE)

गूँजने और लौटने के बीच का अंतर है:

  • इको: आउटपुट के लिए तुरंत मूल्य प्रिंट करेगा।
  • वापसी: एक स्ट्रिंग के रूप में फ़ंक्शन का आउटपुट लौटाएगा। प्रवेश के लिए उपयोगी, आदि।

सिर्फ इसलिए कि आप इस मुद्दे को उठाते हैं, echoआईएनजी और returnआईएनजी में क्या अंतर है ?
डेविड कहते हैं

2
वाह मेरी इच्छा है कि मैं रिटर्निंग पैरामीटर के बारे में जानता था :( मूल रूप से आप $ foo = Print_r ($ array, true) कर सकते हैं; और इसे अन्य तरीकों से उपयोग कर सकते हैं (एक लॉग, टेबल, आदि में)
FryGuy

print_rजब मैं PHP कोडिंग कर रहा था, तब मैंने रिटर्निंग पैरामाम का काफी उपयोग किया है । हालाँकि, मैंने लिखना शुरू कर दिया print_r( $foo, 1 );। यह टाइप करने के लिए तेज है;) और इसके बारे में मुझे पठनीयता की ज्यादा परवाह नहीं है क्योंकि मुझे लगता है कि नाम print_rबहुत वर्णनात्मक नहीं है।
उद्घोष

var_dump()दूसरे तर्क का समर्थन नहीं print_r()करता है, जैसे यह मान को वापस करने की अनुमति देता है, क्योंकि var_dump()आउटपुट के लिए कई तर्क स्वीकार कर सकते हैं।
thomasrutter

@thomasrutter सच है, निश्चित नहीं कि मैंने ऐसा क्यों लिखा।
एलेक्स

6
echo

वापसी प्रकार नहीं है

print

वापसी प्रकार है

print_r()

स्वरूपित के रूप में आउटपुट,


5

इको , प्रिंट , प्रिंट_आर और वर_डंप के बीच अंतर बहुत सरल है।

गूंज

इको वास्तव में एक फ़ंक्शन नहीं है, लेकिन एक भाषा निर्माण है जिसका उपयोग आउटपुट प्रिंट करने के लिए किया जाता है। यह प्रिंट की तुलना में मामूली तेज है।

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 ("Hello World");   // this will print Hello World

प्रिंट

जैसे इको कंस्ट्रक्शन प्रिंट भी एक भाषा निर्माण है न कि एक वास्तविक कार्य। इको और प्रिंट के बीच अंतर यह है कि प्रिंट केवल एक ही तर्क को स्वीकार करता है और प्रिंट हमेशा रिटर्न करता है। 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" }

3

इको :

यह एक समारोह नहीं रिटर्न मूल्य है

कोष्ठकों की आवश्यकता नहीं है

प्रिंट एरियर नहीं

छाप

यह वास्तविक कार्य है

वापसी प्रकार 1

कोष्ठक आवश्यक है

प्रिंट एरियर नहीं

print_r

मानव पठनीय प्रारूप में प्रिंट करें

स्ट्रिंग उद्धरण में नहीं

प्रकार और सभी की तरह परिवर्तनीय की विस्तार से जानकारी नहीं

var_dump

सभी प्रकार के तत्व और उप तत्व जैसे चर की डंप जानकारी


2
इस जवाब के साथ बहुत सारी समस्याएं हैं। printहै कोई वास्तविक समारोह, यह एक भाषा सिर्फ गूंज की तरह निर्माण है। इसे बयान के रूप में भी इस्तेमाल किया जा सकता है। echoहै एक बयान है और न ही यह एक में इस्तेमाल किया जा सकता। printकरता नहीं कोष्ठकों की आवश्यकता होती है, और न ही या तो गूंज करते हैं या होगा एक समारोह की तरह कोष्ठक का उपयोग मुद्रित करें। आपने मुख्य अंतरों में से एक को भी याद किया - इको कॉमा द्वारा अलग किए गए इको को कई स्ट्रिंग्स स्वीकार करता है।
थोमसट्रेटर

2
... और आपने यह उत्तर तब प्रस्तुत किया जब कई उत्तर पहले से मौजूद थे और सही जानकारी शामिल थी।
thomasrutter

2

** Echocan कई भावों को स्वीकार करते हैं जबकि प्रिंट नहीं कर सकते हैं। Print_r () PHP फ़ंक्शन का उपयोग मानव पठनीय रूप में एक सरणी को वापस करने के लिए किया जाता है। यह बस के रूप में लिखा है

![Print_r ($your_array)][1]

2

इको: इको एक भाषा का निर्माण है, जहां इसके साथ कोष्ठक का उपयोग करने की आवश्यकता नहीं होती है और यह किसी भी संख्या में पैरामीटर ले सकता है और वापस आ सकता है।

   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

प्रिंट: यह एक फ़ंक्शन है जो कम से कम एक स्ट्रिंग और प्रारूप शैली लेता है और आउटपुट स्ट्रिंग की लंबाई लौटाता है।

    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


0

Print_r () मूल्य का प्रिंट आउट ले सकता है, लेकिन अगर दूसरा ध्वज पैरामीटर पास हो गया है और TRUE है - तो यह मुद्रित परिणाम को स्ट्रिंग के रूप में लौटाएगा और मानक आउटपुट पर कुछ भी नहीं भेजेगा। Var_dump के बारे में। यदि XDebug डीबगर स्थापित किया गया है, तो आउटपुट परिणाम बहुत अधिक पठनीय और समझने योग्य तरीके से स्वरूपित होंगे।


-1

वे दोनों भाषा निर्माण हैं। इको रिटर्न शून्य और प्रिंट रिटर्न 1. ईको प्रिंट की तुलना में थोड़ा तेज माना जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.