Help us understand the problem. What is going on with this article?

[PHP] print_r、var_dump、var_export のちがい

More than 1 year has passed since last update.

実行結果

実行ソース

PHP
<?php
$data = array(
    "A" => "Apple",
    "B" => "Banana",
    "C" => "Cherry"
);

echo "---print_r---\n";
print_r($data);

echo "---var_dump---\n";
var_dump($data);

echo "---var_export---\n";
var_export($data);
?>
出力結果
---print_r---
Array
(
    [A] => Apple
    [B] => Banana
    [C] => Cherry
)

---var_dump---
array(3) {
  ["A"]=>
  string(5) "Apple"
  ["B"]=>
  string(6) "Banana"
  ["C"]=>
  string(6) "Cherry"
}

---var_export---
array (
  'A' => 'Apple',
  'B' => 'Banana',
  'C' => 'Cherry',
)

解説

出力形式はそれぞれ微妙に異なります。
print_r、var_dump、var_export の各関数は、結果を画面に表示(標準出力)するので、頭に echo 等を付ける必要はありません。

デモソースはこちら

出力結果を変数へ格納する

変数への格納

print_r と var_export 関数は、第2引数を true にすると出力結果を return してくれるようになります。
$result = print_r($data, true);
$result = var_export($data, true);

ファイル出力

error_log 関数と併用することで、ログファイルに出力することもできます。

PHP
// 下記の「3」はファイル出力する指定
error_log(var_export($data, true), 3, "./log.txt");

※正常に log.txt が出力されない場合、たいていはパーミッションの不足が原因です(=書き込み権限が無い)

(・o・ゞ いじょー。

yasumodev
「長い旅行に必要なのは大きなカバンじゃなく、口ずさめる一つの歌さ」スナフキン
https://twitter.com/yasumodev
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away