• ベストアンサー

var_dump関数()の使い道

PHPをイチから勉強しています。 「var_dump()関数を使うと変数の情報を表示できます」と本に載っていますが、この関数の使い道は何だろう?と疑問に思っています。解説では、 $a = true; var_dump($a); は bool(true) 論理型で値はtrueです、とあります。 でも、この関数を使わなくても見れば分かるのでは?と思い、分からなくなりました。素人爆発の質問で申し訳ないのですが分かりやすく教えてください。よろしくお願いします。

  • PHP
  • 回答数2
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>この関数の使い道は何だろう? まぁ一言でいえば「デバッグ」ですね >この関数を使わなくても見れば分かるのでは? そりゃ直前に書いてあればわかるでしょうけど どこか別のところに書いてあったらわからないでしょ? 例はよくないですが、たとえば以下のような定義があったとき キーや、データの型・要素などが明示されるので想定していない エラーが出た場合など原因究明に便利です。 <? $a=Array(Array("x"=>"xxx"),Array("y"=>100.99),Array("z"=>true)); print "<pre>\n"; var_dump($a); print "</pre>\n"; ?>

slowMay
質問者

お礼

デバッグで使うというのは頭になかったです。勉強になりました。ありがとうございます!

その他の回答 (1)

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.2

var_dumpは主にデバッグ用の関数です。 『見れば判るのでは』との事でしたが、内部変数(カウンタの$iなど)や、受け取った$_POSTの値などを直接見る事はできません。 echo などでわざわざデバッグの為だけに出力すれば見えますよ。 var_dumpは配列の中身も見やすく出力できるという利点があります。 それ以上に、echoなどは通常の出力でも使われるので、デバッグ用に埋め込んだ確認用出力を削除し忘れてしまったときに問題になります。 最終的に完成したサイトの上の方に、意味なく『hogehoge』と表示されているのはマヌケです。 完成後、リリース前にechoで検索しても、それがデバッグ用出力なのか、本当に出力したい文字なのか、前後を見ていちいち判断しなければなりません。 var_dumpは事実上デバッグ専用なので、検索してみつかったら削除(またはコメントアウト)してしまって問題ありません。 ※逆に削除して問題があるような出力に、var_dumpを使う方が間違い。 ま、関数として用意されているからと言って、別に全部の関数を使う必要はないですよ。 使い道が判らないなら、使う必要はありません。 Windowsに『電卓』ソフトが付いてるけど、暗算すればイイジャン、使い道が判らない、なんで付いてるの? と思う人がいてもいいですが、それを使う人は大変便利に使います、というのに似ているかも知れません。

slowMay
質問者

お礼

分かりやすい説明をありがとうございました。デバックで使うんですね。謎が一つ解明されました!

関連するQ&A

  • var_dumpのdump意味はを知りたいです。

    <?php $var =1; var_dump(isset($var)); // true var_dump(isset($var1)); // false 以上dumpの意味が分かりません!? どんなときに使用するのでしょうか?  宜しくお願いします。

    • ベストアンサー
    • PHP
  • var_dumpの使い方について

    よくわからない点がございますので、お知恵をお貸し頂ければ幸いでございます。 よくあるvar_dumpの使い方の例には、 <?php $a = array(1, 2, array("a", "b", "c")); var_dump($a); ?> や、session_start(); var_dump($_SESSION); if (isset($_SESSION['expire'])){ など色々ありますが、 下記スクリプトで「$_POST」「$_COOKIE」「$sql」「$record」を調べるには、var_dumpをどこに配置すれば、画面上にスクリプトが反映されるのでしょうか。 皆様お忙しいところ恐れ入りますが、ご助力頂ければ幸いです。 ■スクリプト <?php require_once('dbwin') session_start(); if (isset($_COOKIE['mail1']) !== TRUE) { $_COOKIE['mail1'] = NULL; } if ($_COOKIE['mail1'] != ''){ $_POST['mail1'] = $_COOKIE['mail1']; $_POST['password'] = $_COOKIE['password']; $_POST['save'] = 'on'; } if (!empty($_POST)) { // ログインの処理 if ($_POST['mail1'] != '' && $_POST['password'] != '') { $sql = sprintf('SELECT * FROM ○○ WHERE mail1="%s" AND password="%s"', mysql_real_escape_string($_POST['mail1']), sha1(mysql_real_escape_string($_POST['password'])) ); $record = mysql_query($sql) or die(mysql_error()); if ($table = mysql_fetch_assoc($record)) { // ログイン成功 $_SESSION['id'] = $table['id']; $_SESSION['time'] = time();                                       ........省略 以上なのですが、上記スクリプトの 「$_POST」「$_COOKIE」「$sql」「$record」を、var_dumpを使って調べたいのですが、 その手法を具体的にご教授願えますでしょうか。 例えば、「$record」であれば、 $record = mysql_query($sql) or die(mysql_error()); $var_dump($record); とすべき。  ⇒という形でお知恵をお貸し頂ければ幸いでございます。 (この場合実際には、画面にvar_dumpで得られた値は表示されませんでした。) みなさまお忙しいとは存じますが、何卒よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • is_callable()の第二引数の使い方

    いつもお世話になっています。 PHPの勉強を始めた初心者です。 is_callable()の第二引数の使い方がよく分りません。 true に設定すると、$name が文字列型である場合には、常に bool(true)を返します。 どういう時に、役に立つのでしょうか? お教えいただければ幸いです。 <?php // http://php.net/manual/ja/function.is-callable.php: /* bool is_callable ( callback $name [, bool $syntax_only = false [, string &$callable_name ]] ) syntax_only TRUE の場合、この関数は単に name が関数またはメソッドであるかどうかだけを調べます。 文字列以外の型の変数や不正な形式の配列は、引数として受け付けられません。 */ class someClass { function someMethod() { print "hello from someMethod\n"; } } $varInt = 1; $varString = "string"; $varObject = new someClass(); $varMethod = array($varObject, 'someMethod'); var_dump(is_callable($varInt, true)); // bool(false) var_dump(is_callable($varInt, false)); // bool(false) var_dump(is_callable($varString, true)); // bool(true) var_dump(is_callable($varString, false)); // bool(false) var_dump(is_callable($varMethod, true)); // bool(true) var_dump(is_callable($varMethod, false)); // bool(true) $varObject->someMethod(); [study_php@localhost ch05]$ php is_callable_Test.php bool(false) bool(false) bool(true) bool(false) bool(true) bool(true) hello from someMethod [study_php@localhost ch05]$

    • 締切済み
    • PHP
  • プログラミング用語の返しますというのはどういう意味

    プログラミング用語の返しますというのはどういう意味なんでしょうか? これはphp var_dumpのリファレンスです 返します とはどういう意味なんでしょうか? var_dump (PHP 4, PHP 5, PHP 7, PHP 8) var_dump — 変数に関する情報をダンプする 説明 ¶ var_dump(mixed $value, mixed ...$values): void この関数は、指定した式に関してその型や値を含む構造化された情報を 返します

  • これはphpのリファレンスマニュアルからなんですが

    これはphpのリファレンスマニュアルからなんですが、 なぜ出力結果がdoubleではなく、floatなんでしょうか? <?php $b = 3.1; $c = true; var_dump($b, $c); ?> float(3.1) bool(true)

    • ベストアンサー
    • PHP
  • 【ActionScript】 var宣言を自動化できませんか?

    FLASH8(ActionScript2.0)使用者です。 関数を使用するときうっかり var を付け忘れて痛い目にあうことがよくあります。 例えば for文の i とか… PHPみたいに関数内の変数は全部別物扱いにできればいいのにと思うわけですが全自動な方法はないものでしょうか。 やはり全ての変数に var を付ける、それしかないんでしょうかね。 お詳しい方、よろしくお願いいたします。 *ActionScript3.0なら可能とかいうご回答でも結構です。

  • header.locationで、画面遷移、GET

    送り側(file_upload.php) header("Location: bbs_test.php?photo=$upfilename"); 受け側(bbs_test.php) $photo = $_GET['photo']; var_dump($photo); を実行すると、var_dump()の値がNULLになってしまい、 $upfilenameが、GET渡しできません。 ちなみに、$photo = $_GET['photo']; var_dump($photo); の、この2文は、 function()disprecords{ } という関数の中にあるのですが、 なぜ、var_dump($photo); の値がNULLになってしまうのか、どうすれば、 $upfilnameの値を渡せるのか、ご指導いただきたいです。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPの質問:フォームから受け取った値がNULL

    あまりに基本的過ぎるのか、検索しても、参考書を読んでも分かりませんでした。 ■やりたいこと index.htmlのフォームで入力した値を、output.phpで変数$nameとして受け取りたい。 (この後$nameをstrstr関数の引数として使いたい) ■作ったソース 【index.html】 <form action="output.php" method="post"> <input type="text" name="name"> <input type="submit" value="入力"> </form> 【output.php】 <?php $name = $_POST['name']; var_dump($name); ?> ■困っていること output.phpをブラウザで開くと、以下の通りに表示されます。 string(4) "abcf" しかし、ブラウザで「ソースを表示」すると、[NULL]となってしまいます この変数$nameは、strstr関数の引数として使いたいのですが、 そこで値がNULLのため、上手くいきません。 ■お聞きしたいこと (1)フォームから受け取った値をvar_dump()を使い、ブラウザのソース表示をすると NULLになるのは、そういった仕様なのなのでしょうか? (2)フォームからの値を変数に格納する際、何か注意する点があるのでしょうか? 何か根本的なことから理解していないようでお恥ずかしいのですが、 教えて頂けると大変助かります。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 【jquery】即時関数について

    知識のある方に教えて頂きたく、貴重なスペースをお借りいたします。 $(function(){ })と、即時関数の(function(){})();は 何が異なるのでしょうか。 よくグローバルオブジェクトの汚染を防ぐ為に 即時関数を使用すると記載がありますが、 通常JSを記載する際に使用する、DOM構築後に実行をする記述 $(function(){ })も、結局変数などをVar宣言すれば、 ローカル変数になるので、同じこと(グローバルの汚染を防げる) ではないかと思うのですが、間違っておりますでしょうか。 それだとすると、即時関数の使い道がわからないのですが、 ご教示頂けますでしょうか。 また、以下の(1)の記述方法だと、 「hoge」はグローバルオブジェクトとなってしまいますが、 (2)だとなりませんよね。 であれば、基本的には(2)のように関数は記載した方が良いのでは ないのでしょうか。結構(1)の書き方をしている方がいるので。 どなたかご教示いただければ幸いです。 よろしくお願いいたします。 ----------------------- (1) $(function(){ hoge(); }) function hoge(){ return true; } ----------------------- ----------------------- (2) $(function(){ hoge(); function hoge(){  return true; } }) -----------------------

  • 関数の引数とグローバル変数について

    javascript初心者です。 どうしても分からないことがあるので質問させて頂きます。 グローバル変数の値を関数で処理して増やしコンソールログに表示していく、 というようなソースがあるとします。(以下) //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 var afunc = function(){   a++;   console.log(a); } var bfunc = function(){   b++;   console.log(b); } var cfunc = function(){   c++;   console.log(c); //onclickなどで呼び出す関数 function test1(){   var aplus = new afunc(); } function test2(){   var aplus = new bfunc(); } function test3(){   var aplus = new cfunc(); } グローバル変数や関数などが3つと数が少ないならこれでもいいかも知れませんが、 これが数十個とかに増えると、ソースの量もかなり多くなり 管理も大変になると思い簡略化させたいと考えました。 そこで以下のように変えてみたのですが、 加算がうまくいきません。 //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 vvar xxfunc = function(xx){   this.xx = xx;   this.show = function() {     this.xx++;     console.log(this.xx);   } } //onclickなどで呼び出す関数 function test1(){   var aplus = new xxfunc(a);   aplus.show(); } function test2(){   var aplus = new xxfunc(b);   aplus.show(); } function test3(){   var aplus = new xxfunc(c);   aplus.show(); } もしかすると、関数の引数にはグローバル変数を指定することができないのでしょうか? 何かうまいやり方はあるでしょうか? プログラミング自体が勉強し始めたばかりなので、 おかしなソースの書き方をしているかもしれませんのが、 ご教授、よろしくお願いいたします。

専門家に質問してみよう