[PHP] データ確認関数(var_dump, debug_zval_dump, print_r)


Study / PHP    作成日付 : 2020/01/16 03:00:00   修正日付 : 2020/01/16 03:00:00

こんにちは。明月です。


プログラムを開発する時にデータの流れを確認しなければならない時があります。その流れのポイントを取って確認する作業をデバッグと言います。

簡単なウェブページを作成することならデバッグなしでも値の流れを確認できて、作業ができるかもしれませんが、データベースからデータを検索して取得する流れだと思えば、データの中間でデータが上手く入れ込むか、上手く取得するかを確認することや、もし予想以外のデータがあり、途中で何が間違っているかの確認が必要な時がありますね。


JavaやC#の場合はいい開発ツール(IDE)があり、BreakPointでデータ追跡が可能ですが、PHPの場合はスクリプト言語なので、デバックができるいい開発ツールがないと思います。

先にグーグルで検索してみたらZendStudioがありますね。まだ使ったことがないのでどうかなよく知りません。

link - https://www.zend.com/en/downloads


今はPHPのIDEツールではJavaでも使うIDEツールのeclipseを使っていますが、これがPHPのデバックができないです。

正確に言うとできないことではないですが、筆者の場合は使ったことがないです。

link - https://xdebug.org/

link - https://wiki.eclipse.org/Debugging_using_XDebug

link - https://yard.tistory.com/entry/Eclipse-PHP-Debug-


私もデバックができるように設定してみましたが、結局失敗しました。

stack-overflowの説明とおりだと、eclipse自体にバッグがありそうですね。もし、できる方がいらっしゃいなら教えてください。

後でZendStudioで挑戦してみなければならないですね。(ZendStudioが無料ではなく、有料です。)


筆者の場合は今までPHPを開発する時に別にデバックをしながら開発したことではないです。今はeclipseが慣れているから使いますが、10年前はただnotepad++で開発しました。

PHPはスクリプトなので、ソース修正が簡単だし、すぐ確認できるので「var_dump」の関数を利用して確認ができます。

<?php
  $title = "title";
  $data = 1;
  for($i = 0; $i < 100; $i++) {
    $data++;
  }
  // $dataの値を確認しましょう。
  var_dump($data);
?>
<!DOCTYPE html>
<html>
<head>
  <title>
  <?=$title?>
  </title>
</head>
<body>
  <?=$data?>
</body>
</html>


一応、文字がすごく小さく表示されますが、index.phpの8行目、intタイプの値が101ということで表示されますね。PHPでデータタイプのことを別に気にしませんが、var_dumpではデータタイプも表示しますね。

筆者の場合は普通でvar_dumpを利用しますが、それと似ているな「debug_zval_dump」、「print_r」という関数もあります。

<?php
  $title = "title";
  //一般データ
  $data = 101;
  //配列データ
  $data2 = array("Hello", "world", "Good");
  //連関配列データ
  $data3["First"] = "Test";
  $data3["Second"] = "Hello";
  $data3["Third"] = "World";
?>
<!DOCTYPE html>
<html>
<head>
  <title>
  <?=$title?>
  </title>
</head>
<body>
  <?php
    //var_dumpの例 
    var_dump($data);
    echo "<br>";
    var_dump($data2);
    echo "<br>";
    var_dump($data3);

    echo "<br>";
    echo "<br>";
    echo "<br>";
    //debug_zval_dumpの例
    debug_zval_dump($data);
    echo "<br>";
    debug_zval_dump($data2);
    echo "<br>";
    debug_zval_dump($data3);

    echo "<br>";
    echo "<br>";
    echo "<br>";
    // print_rの例
    print_r($data);
    echo "<br>";
    print_r($data2);
    echo "<br>";
    print_r($data3);
  ?>
</body>
</html>


上の例をみればデータを確認することでは「var_dump」がみやすいですね。しかし「debug_zval_dump」、「print_r」も悪くなさそうなので、簡単に値を確認する状況なら使ってみるのも悪くないと思います。

link - https://www.php.net/manual/en/function.var-dump.php

link - https://www.php.net/manual/en/function.debug-zval-dump.php

link - https://www.php.net/manual/en/function.print-r.php

最新投稿