php var_dump()とprint_r()


297

配列を文字列として吐き出すことvar_dump()との違いは何print_r()ですか?

回答:


355

このvar_dump関数は、など、変数/式に関する構造化された情報を表示します。配列は、構造を示すためにインデントされた値で再帰的に探索されます。また、どの配列値とオブジェクトプロパティが参照であるかも示します。

print_r()人間が読めるだ方法で、変数に関する情報が表示されます。配列の値は、キー要素を示す形式で表示されます。オブジェクトにも同様の表記法が使用されます。

例:

$obj = (object) array('qualitypoint', 'technologies', 'India');

var_dump($obj) 画面の出力の下に表示されます。

object(stdClass)#1 (3) {
 [0]=> string(12) "qualitypoint"
 [1]=> string(12) "technologies"
 [2]=> string(5) "India"
}

そして、print_r($obj)画面下の出力を表示します。

stdClass Object ( 
 [0] => qualitypoint
 [1] => technologies
 [2] => India
)

より詳しい情報


76
var_dump(null)がNULLを返すため、print_r(null)は何も返しません。これはデバッグ時に役立ちます
rosh3000

7
'var_export'で答えを拡張できますか?
ジョリル2016年

1
var_dump()の2つの利点は、ダンプされた情報が自動的にpre要素で囲まれることです。var_dump()を使用すると、各タイプに独自の色があることがわかります。読みやすさの向上。
ジュリアン

3
xdebugのがインストールされている場合にのみ@Julian
レイフ・Neland

57

一般的に、 print_r( )出力はより良く、より簡潔で読みやすく、別名人間が読める形式ですが、データ型を表示できません。

ではprint_r()、あなたはまた、変数に出力を保存することができます。

$output = print_r($array, true);

これはvar_dump()行うことはできません。しかし、var_dump()データ型を表示できます。


9
それは、ビット醜いだものの変数のvar_dump()格納することができる。stackoverflow.com/questions/139474/...
SgtPooki

7
あなたもそれは兄だ可能でvar_export()あなたが保存が必要な場合
CSᵠ

21

var_dump() モノの種類とその内容が表示されます。

つまり、=>の(string)"var" がここにあります。

print_r() コンテンツを出力するだけです。

出力するか=> "var" はこちら。


12
より良い例は、var_dump(0.0);どの出力float(0)print_r(0.0);どの出力0(したがって、型の混乱を招く可能性がある)だろうと思います...
ircmaxell

13

何を使用すべきかを尋ねる場合、私は通常、print_r()値の表示やvar_dump()変数の型に問題がある場合に使用します。


8

var_dumpオブジェクト/変数に関する構造化された情報を表示します。これにはタイプと値が含まれます。同様に、print_r配列は再帰されてインデントされます。

print_r配列とオブジェクトのキーと要素を表す形式で、値に関する人間が読める情報を表示します。

注意すべき最も重要なことvar_dumpは、出力タイプと値でprint_rはなく、出力タイプです。


5

間の有意差var_dumpprint_r

どちらの関数も変数に関する情報をダンプしますが、ダンプvar_dumpされる複数のパラメーターがあります。この場合print_r最初のパラメーターはダンプする変数で、2番目のパラメーターはブール値です。

var_dump値を返すことはできません。値をダンプ/印刷することしかできません。ここで、2番目のパラメーターprint_rtrueに設定すると、print_rは変数情報を返すことができます。戻り値はprint_rになります文字列フォーマット。

が出力する情報print_rは、as var_dumpが生の値を出力する場合の読み取り可能な形式です。

print_rfunctionは多くのコンテキストでvar_dump使用できますが、主に値を返すことができないため、デバッグ目的で使用できます。


1
vardump1 つ以上の引数を取り、それぞれがダンプされます。
ビショップ

@bishop、はい、正しいです。引数を追加できますが、値を返しません
Akshay Khale

だからあなたの答えを修正しますか?
Govind Rai

これは、@ GovindRai
Akshay Khaleの

「var_dumpは値を返すことができません」?はい、できます。ちょっと。ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

3

ブラウザーに出力するときは、var_dump()またはプリンターの出力をpreタグに入れることをお勧めします。

print "<pre>";
print_r($dataset);
print "</pre>";

より読みやすい結果が得られます。


2

var_dump($var) の追加の詳細を提供することにより、詳細を表示します

  • 値のデータ型(子孫要素を含む)
  • 変数の要素数
  • 値の長さ

1

大きな配列の場合、print_rは有用な情報よりもはるかに多くの情報を表示できます。このように、最初の2000文字または必要な数だけ切り捨てることができます。

  echo "<pre>" . substr(print_r($dataset, 1), 0, 2000) . "</pre>";

1

var_dump():-

  1. この関数は、タイプと値を含む1つ以上の式に関する構造化情報を表示します。配列とオブジェクトは、構造を示すためにインデントされた値で再帰的に探索されます。
  2. この関数は、変数内の要素の数を表示します。
  3. この関数は、変数の長さを表示します。
  4. 値を返すだけでは値を出力できません。
  5. デバッグ目的で使用されます。

例:-

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

出力:-

   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():-

  1. 変数に関する人間が読める情報を出力します。
  2. 変数の要素数をvar_dump()として表示しません。
  3. 変数の変数の長さをvar_dump()として表示しません。
  4. printf_r()で2番目のパラメーターをtrueに設定した場合、値を返します。

例:-

<pre>
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
print_r ($a);
?>
</pre>

出力:-

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

「値を返すだけでは値を出力できません。」はい、できます。ちょっと。ob_start(); var_dump($var); $dump=ob_get_clean();
Sinus Mackowaty

0

print_r()およびvar_dump()は、PHPでデバッグ目的で使用される配列デバッグ関数です。print_r()関数は配列キーとそのメンバーをArray([key] = value)として返しますが、var_dump()関数は、配列タイプと長さを含む配列キーを含む配列リストを返します。例:Array(array_length){[0] = string (1) 'a'}。


0

次のように、var_dumpを使用して複数のパラメータを渡すことができます。

var_dump("array1",$array1,"array2",$array2);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.