Var_dump, var_export & print_r के बीच अंतर


126

और var_dump, के बीच अंतर क्या है ?var_exportprint_r


14
कभी-कभी किसी और से बेहतर समझने के लिए पूछना आसान होता है फिर मैनुअल पढ़ना।
दीपक लामिछाने

11
@ आपके कॉमन सेंस एसओ उत्तर अक्सर स्पष्ट, अधिक संक्षिप्त, कार्रवाई योग्य और मूल रूप से हमेशा PHP मैनुअल की तुलना में संदर्भ के लिए आसान होते हैं।
मार्क फॉक्स

जवाबों:


194

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है कि संक्षिप्त और सटीक का सबसे अच्छा समझौता है।


51
ध्यान दें var_export, इसकी प्रकृति के कारण, भयावह पुनरावर्ती मृत्यु पर, अच्छी तरह से, पुनरावर्ती सरणियों की मृत्यु हो जाएगी। print_rऔर var_dump(हालांकि, बाद के बारे में पूरी तरह से निश्चित नहीं हूं, क्योंकि मैं आमतौर पर इसका उपयोग नहीं करता हूं) उस मुद्दे पर नहीं है। इसलिए var_export($_GLOBALS);, उदाहरण के लिए (जिसमें स्वयं शामिल नहीं है)। :)
पिंकगोथिक

@ftrotter मुझे लगा कि टिप्पणी हमेशा उस जिज्ञासा को अच्छी तरह से समझाएगी, लेकिन आप वहां जाते हैं, जवाब में एक छोटा नोट जोड़ा।
फ़िहाग

1
यह जोड़ा जाना चाहिए कि आप print_r () और var_export () इसे आउटपुट करने के बजाय एक स्ट्रिंग लौटा सकते हैं, जबकि var_dump () ऐसा नहीं कर सकता। इसके अलावा, मैं var_export () को पसंद नहीं करता क्योंकि यह भ्रामक है - यदि आप कुछ अपरिभाषित स्थिर SOMECONST निर्यात करने का प्रयास करते हैं, तो आपको बस एक पाठ स्ट्रिंग 'SOMECONST' वापस मिल जाएगी। तो यह NULL, 0, "" नहीं कहेगा, लेकिन यह वास्तव में मान लेगा कि यह एक स्ट्रिंग है (और मुझे लगता है कि NOTICE भी फेंक दें)।
यूजरफुसर

1
var_export सुरक्षित रूप से स्ट्रिंग का प्रतिनिधित्व करने के लिए अच्छा है, जैसे उद्धरण / बैकस्लैश सुरक्षा।
डेकेनर

1
व्यक्तिगत रूप से मैं var_dumpआउटपुट पसंद करता हूं । बहुत बुरा यह एक स्ट्रिंग के रूप में आउटपुट वापस करने की अनुमति नहीं देता है। जैसा कि मैं ऊपर टिप्पणी में @ iconoclast की भावना से संबंधित कर सकते हैं। लेकिन चयन करने के लिए होने var_exportसे अधिक var_dumpउपयोग के इस मामले में मेरे लिए स्वीकार्य है। पूर्णता के लिए, इस संबंधित सुविधा अनुरोध पर ध्यान दें ।
पॉल वैन ल्यूवेन

3

var_dumpऔर var_exportइस तरह से संबंधित ( मैनुअल से )

var_export () दिए गए चर के बारे में संरचित जानकारी प्राप्त करता है। यह एक अपवाद के साथ var_dump () के समान है: लौटाया गया प्रतिनिधित्व वैध PHP कोड है।

वे print_rउस var_dumpजानकारी से भिन्न होते हैं, जैसे डेटाटाइप और तत्वों का आकार।

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