PHP - よく使う関数 - 出力


クラウディア 


1. 概要
2. print_r 型に合わせて出力
3. var_dump ダンプ
4. var_export ダンプ

1. 概要

 本ページで扱う内容は、多くは、マニュアルでは「変数・データ型関連」というカテゴリで分類されています。  わたしは、出力部分を分けたいので、別途ページを作りました(あくまでもメモなので、きちんと体系づいてるわけではない)。  体系づいて書いていないため、本サイトでも「変数・データ型」とかぶっている箇所がありますので、ご注意ください。  「print」等、(標準)出力を扱う関数についてメモしていきます(まぁ、「print」自体は書きませんが)。  本ページは、下記のサイトを参考にさせていただきました。
PHP: 変数操作 関数」
「【PHP】Laravelのデバッグ・変数の確認方法(var_export, dump, dd関数) #PHP

2. print_r 型に合わせて出力

 詳細は、「PHP: print_r」をご参照ください。  「print_r」は、指定した変数の型に合わせて内容を出力してくれます。

mixed print_r ( mixed $expression [, bool $return = FALSE ] )
 第2引数を省略すると、「print_r」の結果は標準出力へ出力されますが、第2引数に「true」を与えると結果をリターン値として戻してくれます。

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


Array
(
    [REDIRECT_HTTPS] => on
    [REDIRECT_SSL_TLS_SNI] => freebsd.sing.ne.jp
    [REDIRECT_STATUS] => 200

・・・	略	・・・

    [REQUEST_TIME] => 1666139840
)

3. 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」のログへ出力されます。

4. 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()」の出力の方が、洗練された感じがします。  場面によって、使い分けるのがよいかと思います。

earthcar(アースカー)
【usus ウズウズ】