PHP - よく使う関数 - 変数・データ型 - 出力(var_dump・var_export)


 クラウディア


1. 概要
2. var_dump ダンプ
3. var_export ダンプ
4. 単体だと改行されない
5. 参考サイト

1. 概要

 前ページに続いて、変数の出力。

2. var_dump ダンプ

 詳細は、「PHP: var_dump」をご参照ください。  参考ページには、下記のように記述されています。
この関数は、指定した式に関してその型や値を含む構造化された情報を 返します。配列の場合、その構造を表示するために各値について再帰的に 探索されます。

var_dump(mixed $value, mixed ...$values): void
 というコードを書いてブラウザで表示すると(改行は「<pre>」で・・・)、下記のような表示が得られます。

array(47) {
  ["REDIRECT_HTTPS"]=>
  string(2) "on"
  ["REDIRECT_SSL_TLS_SNI"]=>
  string(18) "freebsd.sing.ne.jp"
  ["REDIRECT_STATUS"]=>
  string(3) "200"

・・・	略	・・・

  ["REQUEST_TIME"]=>
  int(1666139840)
}
 配列の個数がわかるところはよいですが、それ以外は、前項の「print_r」の方が、視覚的になじみやすいかと思われます。  「var_dump()」は、出力先が標準出力になっているため、「Laravel」では、少々使いにくい。  これを変更するには、「ob_*()」という関数を使用して、出力先を変更してやります。  すなわち、「$data」という変数を出力したいものとして。

ob_start();
var_dump($data);
$text=ob_get_contents();
ob_end_clean();
Log::debug(__LINE__.' $data['.$text.']'.PHP_EOL);
 と書けば、「Laravel」のログへ出力されます。

3. var_export ダンプ

 「var_export()」は、「var_dump()」に似ていますが、公式のドキュメントによれば、「の関数は var_dump() に似ていますが、 返される表現が有効な PHP コードであるところが異なります。」となっています。

var_export(mixed $value, bool $return = false): ?string
 下記のコードを書いて。

<?php

$array = Array("は", "ひ", "ふ");
var_dump($array);
var_export($array);
 実行すると、下記の結果が得られます。

array(3) {
  [0]=>
  string(3) "は"
  [1]=>
  string(3) "ひ"
  [2]=>
  string(3) "ふ"
}
array (
  0 => 'は',
  1 => 'ひ',
  2 => 'ふ',
)
 なるほど、「var_dump()」より「var_export()」の出力の方が、洗練された感じがします。  場面によって、使い分けるのがよいかと思います。

4. 単体だと改行されない

 前項までの例は、出力する変数が「array」でして。  「array」だと、改行をうまいこと入れてくれますが、単体の変数の場合は、改行されません。  例えば、下記のコードを書いて。

<?php
$status1 = true;
$status2 = false;

print("\$status1[$status1]\n");
print("\$status2[$status2]\n");

var_dump( $status1 );
var_dump( $status2 );

var_export( $status1 );
var_export( $status2 );
 実行すると、下記のような表示になります。

$status1[1]
$status2[]
bool(true)
bool(false)
truefalse
 末尾がいただけませんな。  この場合は、自分で改行を入れてやる必要があります。  例えば、下記のように。

print("\$status1[". var_export($status1, true). "]\n");
print("\$status2[". var_export($status2, true). "]\n");
 こうすれば、下記のように表示されます。

$status1[1]
$status2[]
bool(true)
bool(false)
$status1[true]
$status2[false]

5. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
PHP: 変数操作 関数」
「【PHP】Laravelのデバッグ・変数の確認方法(var_export, dump, dd関数) #PHP」
「PHP Bool 値を文字列として出力したい

AbemaTV 無料体験
マイニングベース