आप इसकी जांच करना चाहते हैं 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*जब वृत्तीय संदर्भ का सामना।