आप इसकी जांच करना चाहते हैं var_export
- जबकि यह एक ही आउटपुट प्रदान नहीं करता है क्योंकि var_dump
यह एक दूसरा $return
पैरामीटर प्रदान करता है जो इसे प्रिंट करने के बजाय इसके आउटपुट को वापस करने का कारण होगा:
$debug = var_export($my_var, true);
क्यों?
मैं इस एक-लाइनर का उपयोग करना पसंद करता हूं ob_start
और ob_get_clean()
। मुझे यह भी पता चला कि आउटपुट पढ़ना थोड़ा आसान है, क्योंकि यह सिर्फ PHP कोड है।
के बीच का अंतर var_dump
और var_export
वह यह है कि var_export
रिटर्न एक "एक चर के parsable स्ट्रिंग प्रतिनिधित्व" जबकि var_dump
बस एक चर के बारे में जानकारी उदासीनता। व्यवहार में इसका मतलब यह है कि var_export
आपको वैध PHP कोड देता है (लेकिन आपको चर के बारे में बहुत अधिक जानकारी नहीं दे सकता है, खासकर यदि आप संसाधनों के साथ काम कर रहे हैं )।
डेमो:
$demo = array(
"bool" => false,
"int" => 1,
"float" => 3.14,
"string" => "hello world",
"array" => array(),
"object" => new stdClass(),
"resource" => tmpfile(),
"null" => null,
);
// var_export -- nice, one-liner
$debug_export = var_export($demo, true);
// var_dump
ob_start();
var_dump($demo);
$debug_dump = ob_get_clean();
// print_r -- included for completeness, though not recommended
$debug_printr = print_r($demo, true);
उत्पादन में अंतर:
var_export ( $debug_export
उपरोक्त उदाहरण में):
array (
'bool' => false,
'int' => 1,
'float' => 3.1400000000000001,
'string' => 'hello world',
'array' =>
array (
),
'object' =>
stdClass::__set_state(array(
)),
'resource' => NULL, // Note that this resource pointer is now NULL
'null' => NULL,
)
var_dump ( $debug_dump
उपरोक्त उदाहरण में):
array(8) {
["bool"]=>
bool(false)
["int"]=>
int(1)
["float"]=>
float(3.14)
["string"]=>
string(11) "hello world"
["array"]=>
array(0) {
}
["object"]=>
object(stdClass)#1 (0) {
}
["resource"]=>
resource(4) of type (stream)
["null"]=>
NULL
}
Print_r ( $debug_printr
उपरोक्त उदाहरण में):
Array
(
[bool] =>
[int] => 1
[float] => 3.14
[string] => hello world
[array] => Array
(
)
[object] => stdClass Object
(
)
[resource] => Resource id #4
[null] =>
)
कैविएट: var_export
परिपत्र संदर्भों को नहीं संभालता है
यदि आप किसी चर को परिपत्र संदर्भों के साथ डंप करने का प्रयास कर रहे हैं, तो कॉलिंग var_export
का परिणाम PHP चेतावनी होगा:
$circular = array();
$circular['self'] =& $circular;
var_export($circular);
का परिणाम:
Warning: var_export does not handle circular references in example.php on line 3
array (
'self' =>
array (
'self' => NULL,
),
)
दोनों var_dump
और print_r
, दूसरे हाथ पर, इच्छा उत्पादन स्ट्रिंग *RECURSION*
जब वृत्तीय संदर्भ का सामना।