Was ist der Unterschied zwischen var_dump()
y print_r()
in Bezug auf die Ausgabe eines Arrays als String?
Antworten
Zu viele Anzeigen?var_dump() :-
- Diese Funktion zeigt strukturierte Informationen über einen oder mehrere Ausdrücke an, die deren Typ und Wert enthalten. Arrays und Objekte werden rekursiv untersucht, wobei die Werte eingerückt werden, um die Struktur zu zeigen.
- Diese Funktion zeigt die Anzahl der Elemente in einer Variablen an.
- Diese Funktion zeigt die Länge der Variablen an.
- Kann den Wert nicht zurückgeben, sondern nur ausdrucken.
- Sie dient der Fehlersuche.
Beispiel :-
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>
Ausgang :-
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
print_r() :-
- Druckt menschenlesbare Informationen über eine Variable.
- Keine Anzeige der Anzahl der Elemente in einer Variablen als var_dump().
- Keine Anzeige der Länge der Variablen in einer Variablen als var_dump().
- Gibt den Wert zurück, wenn wir den zweiten Parameter in printf_r() auf true setzen.
Beispiel :-
<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>
Ausgabe:-
<pre>
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
</pre>
Für alle, die die Funktion var_dump() zum Testen benötigen!
Ich habe meine eigene Test-Dump-Funktion geschrieben, weil ich das ob_start ... Zeug nicht immer wieder machen wollte. Das Schöne daran ist, dass sie sogar die Parameternamen aus dem Quellcode übernimmt!
function test_dump (...$params)
{
$file_test_dump = 'test_dump.log';
$backtrace = debug_backtrace(0, 3);
$caller_file = $backtrace[0]['file']);
$caller_function = $backtrace[1]['function'];
$caller_line = $backtrace[0]['line'];
if (empty($params))
{
file_put_contents ($file_test_dump, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" , FILE_APPEND);
file_put_contents ($file_test_dump, '!!!!!! ' . date ("[Y-m-d H:i:s:u]", time()) . " - FILE: {$caller_file} | FUNCTION: {$caller_function} | LINE: {$caller_line} !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \n\n" , FILE_APPEND);
file_put_contents ($file_test_dump, "!!! No parameter given !!! \n\n" , FILE_APPEND);
return;
}
// --- get source file ---
$source_file = file($backtrace[0]['file']);
// --- get line of source file and pre filter with regex ---
preg_match ('~\(([^*]*)\)~', $source_file [intval($backtrace[0]['line']) - 1], $parameter_line);
$parameter_line_filtered = str_replace(" ", "", $parameter_line [1]);
// put parameter names into array
$params_names = explode(',', $parameter_line_filtered);
// --- OUTPUT ----
file_put_contents ($file_test_dump, "#######################################################################################################################################################################################################################\n" , FILE_APPEND);
file_put_contents ($file_test_dump, '### ' . date ("[Y-m-d H:i:s:u]", time()) . " - FILE: {$caller_file} | FUNCTION: {$caller_function} | LINE: {$caller_line} ### \n\n" , FILE_APPEND);
$i = 0;
foreach ($params as $param)
{
$i++;
file_put_contents ($file_test_dump, " --- Parameter " . $i . ': ' . $params_names[$i - 1] . " --------------------------------------------------------------------------------------------------------------------------\n", FILE_APPEND);
if ( is_array($param) ||
is_object($param) ||
is_bool($param) )
{
ob_start();
var_dump($param);
file_put_contents ($file_test_dump, ob_get_contents() . "\n\n", FILE_APPEND);
ob_end_clean();
}
else
{
file_put_contents ($file_test_dump, $param . "\n\n", FILE_APPEND);
}
}
file_put_contents ($file_test_dump, "\n\n", FILE_APPEND);
}
Print_r() und var_dump() sind Array-Debugging-Funktionen, die in PHP zum Debuggen verwendet werden. print_r() gibt die Array-Schlüssel und seine Mitglieder als Array([Schlüssel] = Wert) zurück, während var_dump() eine Array-Liste mit seinen Array-Schlüsseln mit Datentyp und Länge zurückgibt, z.B. Array(array_length){[0] = string(1)'a'}.
- See previous answers
- Weitere Antworten anzeigen