PHPのよりきれいで有益なVar_dumpの代替ですか?[閉まっている]


130

すべてのまともなPHPプログラマーは、使用する、print_rまたはvar_dumpラッパーを使用し、愛し、ショートカットキーを割り当てます。お気に入りのキーを共有してみませんか。


39
echo '<pre>'; print_r($ var); exit;を使用します。私もそれを閉じません。私はまともではないと思います
Funky Dude

リンクを編集してgithubを指すように編集し、Kintの開発を続けます。それでも問題が解決しない場合は、どうぞお知らせください。
raveren 2012

1
ねえ、キントはかっこいい!それは私の日を救っただけです。
–IstvánUjj-Mészáros2013

2
プログラムの宣伝通知が100%である質問が「私は自分のvar_dump()を作成する」バージョンになっているのはなぜですか?最初の質問は、製品広告が質問として許可される理由です。
m3nda 2013年

11
質問してから1年以上経ってから作ったからです。何が気になるのかわかりません。1万行以上の成熟したオープンソースツールを作成し、数年後も常に改善しています。私は自分自身で質問に答えました-SOの伝統もそうです。
raveren

回答:


70

これを聞いてから1年分の時間と労力を費やして、ようやくvar_dumpのバージョンであるKintをオープンソース化しました。それについては、プロジェクトページまたはgithubで直接お読みください

これがスクリーンショットです:

キント

プラグインでごめんね:)


編集:私は同じようにあなたが問題を抱えている場合は/特徴は、してくださいしたい、これはサポートフォーラムではないことを、コメンターを思い出させるためにしたい問題を提出。コメントをリクエストするサポートには、削除のフラグが付けられます。


フォントサイズを変更し、CSSコードを美化する必要がありましたが、すばらしい仕事でした...久々のKrumoユーザーからのものです
Quamis

1
どのような変更を加えましたか。改善と思われる場合は、raveren @ gmail.comに変更を送信できます
raveren

私はKrumoに慣れていて、もっと小さなフォントが欲しかったし、CSSコードも美しくしました。古い習慣のように、実際の改善とは言えないもの:)
Quamis

よく考えは、CSSは実際の出力にできるだけ干渉しないように、JSと共に圧縮されることになっているということでした。もちろん..生成されたソースのきれいな字下げも予定されていたが、私は現在、KINTに専念する時間がない
raveren

2
例として、Kintはオブジェクトをダンプした場合に保護変数とプライベート変数を表示しますが、krumoは表示しません(前者だけが私が想定するリフレクションクラスを使用しているため)。一般的に言えば、Kintの方が優れていることがわかりました。それをより使いやすくするためにcssを微調整する必要もありましたが(その巨大なフォントは、大量のネストされたプロパティをダンプするときにうまく機能しません)。ああ、その背後にあるコードは混乱ではなく、Krumo(申し訳ありませんがKrumoの作者!)には言えないことです
Mahn

45

私に好まがありvar_dump、機能Xdebug拡張モジュールによって提供される拡張子だけをインストールします(簡単に、両方のWindowsおよびLinux上で)、そしてvar_dumpより良い出力を取得します。

  • より良いフォーマット
    • HTML
  • 表示する情報の量を調整するオプションがあります

そして簡単なスクリーンショット:

xdebug


そしてもちろん、Xdebugには、リモートデバッグ(たとえば、PHPアプリケーションのグラフィカルデバッグ、たとえばEclipse PDTでのデバッグ)、プロファイリングなど、その他の便利な機能がたくさんあります ...


1
このxdebugフォーマットクラスを共有ホストで使用する必要があります。私の個人的なプロジェクトに含める方法はありますか?
Anyul Rivas 2012

1
サーバーの管理者(ルート)でない場合、PHP拡張機能をインストールできない可能性があります PHP拡張機能をインストールする共有ホスティングサービスを見たことはありません)。そのため、いいえ、Xdebugを使用することはできません(とにかく、運用サーバーに Xdebugをインストールすることは、一般的にはお勧めできません結局、これはデバッグ拡張機能です)。変数出力関数のPHPベースの実装にフォールバックする必要があります(他のいくつかの回答を参照)
Pascal MARTIN

1
はい、エラーが発生したときに出力を送信するクラスが必要でした。
Anyul Rivas

34

私は自分で書きました:REFデモ):

r()出力

計画は、テキストのみのレンダリングを追加し、Kintのように入力式に関する情報を表示することです...


4
よくできた、とても素晴らしいツール
ssuperczynski 2013年

2
REFは素晴らしく、カラフルで、高速です。いつも使っています。
Marty McGee

2
素晴らしいツール、私はそれに切り替えました。ありがとう!
Andris

少数の人々が作曲家を使用していますが、私ではありません。作成する場合は、dllこの「デバッグ」を使用します。よろしくお願いいたします。
Alex

27

これは私がインラインで使用する私のもので、非常に便利です:

$pretty = function($v='',$c="&nbsp;&nbsp;&nbsp;&nbsp;",$in=-1,$k=null)use(&$pretty){$r='';if(in_array(gettype($v),array('object','array'))){$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").'<br>';foreach($v as $sk=>$vl){$r.=$pretty($vl,$c,$in+1,$sk).'<br>';}}else{$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").(is_null($v)?'&lt;NULL&gt;':"<strong>$v</strong>");}return$r;};

echo $pretty($some_variable);

2
この機能が大好き-簡単で明確で、非常に簡単に言及しました:)
derekdreery 2013年

ありがとう。いつも使っています。本当にPHPに組み込まれるべきです。2番目のパラメーターを使用して、独自のフォーマットを設定できます。例:echo $ pretty($ some_variable、 "-");
ギジェルモフィリップス

7
これは、print_r、var_dump、およびvar_exportのすべての最悪の機能を美しく組み合わせています。HTMLエスケープなし、単一のパラメーターのみを受け入れる、再帰でハングする、出力を返すことができない、そしてそれをやり遂げるだけで、それは完全に読み取り不可能です。私は嫌いな人になりたくありませんが、コメントはそれがとても完璧に見えるようにします。
raveren

コメント@Raverenをありがとう。もっと具体的になれば、私は私の答えを改善します。
ギジェルモフィリップス

2
IMOの最良の単一ラインソリューションは単純function pretty(){echo'<pre>';foreach(func_get_args()as $arg){ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";}die;}です。Var_dumpは非常に冗長な関数であり、すべてのPHPのエッジケース(LOTSがある場合)を処理し、100%安定しています。しかし、結局のところ、実装が最適であると判断した場合は、それを使用する必要があります。
raveren

16

Krumo警告、マルウェアのChromeアラート)を探しています。

簡単に言うと、Krumoはprint_r()とvar_dump()の代わりです。定義上、Krumoはデバッグツール(最初はPHP4 / PHP5で、現在はPHP5のみ)であり、PHP変数に関する構造化された情報を表示します。


これは素晴らしいです!ありがとう。+1
the_drow 2010年

2
試してみたら壊れていました。私はそれを報告しましたが、返答はなく、新しいバージョンもありません
Mawgはモニカを

2
@PekkaリンクはChromeでマルウェア警告をスローしています。
Tim Post

今日、krumoはこの男github.com/mmucklo/krumoによって更新されました(ただし、Kintの方が良いかもしれませんが、詳細はこちら)
lolesque

9

私の愛Firephpプラス放火犯

  • ヘッダーを使用してログ情報を書き出すので、AJAXを壊すことはありません。
  • ログに記録する変数/オブジェクトの非常に素晴らしいグラフィック表現を提供します
  • 各ログステートメントが発生するファイル名と行番号を表示できます
  • 手続き型またはオブジェクト指向のAPIを使用して、プロジェクトで使いやすい


8

これに対する私の(部分的な)解決策は、このような関数を単に追加することです(Google Chromeを使用して):

<?
function console_dump($value)
{ 
?>
<script>
    console.log(<? echo json_encode($value); ?>);
</script>
<?
}
?>

Ctrl + Shift + J(コンソールを開く)を押すと、JSON構造が見つかります。もちろん、JSON応答をきれいに印刷するのにさらに役立ちます。


8

私が使用するものの完全な例...

<pre>

<?php


//*********** Set up some sample data

$obj = new stdClass;
$obj->a=123;
$obj->pl=44;
$obj->l=array(31,32);

$options = array(
  'Orchestra'=>array(1=>'Strings', 8=>'Brass', 9=>$obj, 3=>'Woodwind', 16=>'Percussion'),
  2=>'Car',
  4=>'Bus',
  'TV'=>array(21=>'Only Fools', 215=>'Brass Eye', 23=>'Vic Bob',44=>null, 89=>false));


//*********** Define the function

function dump($data, $indent=0) {
  $retval = '';
  $prefix=\str_repeat(' |  ', $indent);
  if (\is_numeric($data)) $retval.= "Number: $data";
  elseif (\is_string($data)) $retval.= "String: '$data'";
  elseif (\is_null($data)) $retval.= "NULL";
  elseif ($data===true) $retval.= "TRUE";
  elseif ($data===false) $retval.= "FALSE";
  elseif (is_array($data)) {
    $retval.= "Array (".count($data).')';
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix [$key] = ";
      $retval.= dump($value, $indent);
    }
  }
  elseif (is_object($data)) {
    $retval.= "Object (".get_class($data).")";
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix $key -> ";
      $retval.= dump($value, $indent);
    }
  }
  return $retval;
}


//*********** Dump the data

echo dump($options);

?>
</pre>

出力...

Array (4)
 [Orchestra] = Array (5)
 |   [1] = String: 'Strings'
 |   [8] = String: 'Brass'
 |   [9] = Object (stdClass)
 |   |   a -> Number: 123
 |   |   pl -> Number: 44
 |   |   l -> Array (2)
 |   |   |   [0] = Number: 31
 |   |   |   [1] = Number: 32
 |   [3] = String: 'Woodwind'
 |   [16] = String: 'Percussion'
 [2] = String: 'Car'
 [4] = String: 'Bus'
 [TV] = Array (5)
 |   [21] = String: 'Only Fools'
 |   [215] = String: 'Brass Eye'
 |   [23] = String: 'Vic Bob'
 |   [44] = NULL
 |   [89] = FALSE

1
私は\ nをPHP_EOLに変更しました。これは、ウィンドウのCMDからphpを使用するとうまく機能します
iewebguy

7

これが私のものです:

class sbwDebug
{
    public static function varToHtml($var = '', $key = '')
    {
        $type = gettype($var);
        $result = '';

        if (in_array($type, ['object', 'array'])) {
            $result .= '
        <table class="debug-table">
            <tr>
            <td class="debug-key-cell"><b>' . $key . '</b><br/>Type: ' . $type . '<br/>Length: ' . count($var) . '</td>
            <td class="debug-value-cell">';

            foreach ($var as $akey => $val) {
                $result .= sbwDebug::varToHtml($val, $akey);
            }
            $result .= '</td></tr></table>';
        } else {
            $result .= '<div class="debug-item"><span class="debug-label">' . $key . ' (' . $type . '): </span><span class="debug-value">' . $var . '</span></div>';
        }

        return $result;
    }
}

スタイル:

table.debug-table {
  padding: 0;
  margin: 0;
  font-family: arial,tahoma,helvetica,sans-serif;
  font-size: 11px;
}

td.debug-key-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

td.debug-value-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

div.debug-item {
  border-bottom: 1px dotted #AAAAAA;
}

span.debug-label {
  font-weight: bold;
}

2
悪くないです。出力の例を示していれば、おそらくさらに多くの票が投じられたでしょう。
Mawgはモニカを

@acSlaterは私にとってsbwDebugは機能します。投稿するのを忘れたクラスを作成して、その中に関数を配置するだけです。
Dennis98 2016

6

私は最近、無料のChrome拡張機能(進行中の作業)を開発しました。ライブラリ、プレタグ、およびすべてのアプリへのインストールなしでvarダンプを美化するためです。すべてJavaScriptとregExで行われます。あなたがしなければならないすべては、拡張機能をインストールし、あなたの行くべきものです。私はFirefoxバージョンにも取り組んでいます。こちらがGitHubページです。chromeとfirefoxのウェブストアですぐに利用できるようにしたいと思っています!

https://github.com/alexnaspo/var_dumpling

次に出力例を示します。

出力例


6
素敵な男!あなたの拡張機能をダウンロードして、それは完全に動作します!ありがとう!
coryj 2012年

5
おい...ありがとう 私はしばらくの間、このようなものを探していました
ブロードベント

1
アンリアル。まだ最高のオプション!
クリスチャン

Firefox 15で試したところ、互換性がないと言われました。これをバイパスするチャンスはありますか?
Cyber​​fly 2013年

1
これは美しいです。もっと早く見つけたかったのに!


2

それらの豪華なライブラリは素晴らしいです...オーバーヘッドを除いて。無限のパラメーターを取る単純でかわいらしいvar_dumpが必要な場合は、私の関数を試してください。それはいくつかの単純なHTMLを追加します。データ属性も追加されます。HTML5を使用している場合、下位バージョンはそれらを無視しますが、ブラウザコンソールで要素を開き、画面に表示されているものが十分でない場合は、もう少し情報を取得できます。

レイアウトは非常にシンプルで、オーバーヘッドはありません。オブジェクトダンプ(XMLを含む)のようなものgettypeclass名前など、各パラメーターに大量の情報を提供します。試行錯誤して、私は何年も使ってきました。

function preDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
        foreach (func_get_args() as $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; }
            $sb .= '<pre data-type="'.gettype($arg).'"';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                    $sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= json_encode($arg);
                    break;
                case "string":
                    $sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= $arg;
                    break;
                default:
                    $sb .= ' data-dump="var_dump"';
                    if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
                    $sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
                    if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
                    $sb .= '</b></p><p>';
                    ob_start();
                    var_dump($arg);
                    $sb .= ob_get_clean();
                    if (ob_get_length()) ob_end_clean();
            }
            $sb .= '</p></pre>';
        }
        $sb .= '</fieldset></div>';
    }
    else {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

また、Codeigniterを使用する場合は、CIも非常に簡単に追加してください。まず、に移動しapplication/config/autoload.phpて、helper 'string'がオンになっていることを確認します。

$autoload['helper'] = array( 'string' ); 

次に、単純にMY_string_helper.phpin という名前のファイルを作成し、存在チェックのapplication/helpers一般的なifステートメントに関数を挿入します。

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
    if (!function_exists('preDump')) {
        function preDump() {
            ...
        }
    }
//  DON'T CLOSE PHP

|または|別の方向に進みたい場合。

次のスニペットは、ブラウザコンソールに変数を表示することを除いて、上記と同じです。これにより、SQLオブジェクト呼び出しや、キー名などが欠落している他の配列およびオブジェクト呼び出しのデバッグが容易になる場合があります。

function consoleDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<script type="text/javascript">console.log("<" + new Array('.(count($args) < 10 ? '49': '48').').join("-") + "[consoleDump: '.count($args).' items]" + new Array(50).join("-") + ">"); console.log([';

        foreach (func_get_args() as $i => $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(consoleDump: )[0-9]+/', 'consoleDump: '.(count($args)-1), $sb); continue; }
            $sb .= '{ "type": "'.gettype($arg).'", ';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                case "string":
                    $sb .= '"value": '.json_encode($arg);
                    break;
                default:
                    $sb .= '"value": '.json_encode($arg);
                    if (is_object($arg) || is_array($arg)) $sb .= ', "count": '.json_encode(count((array)$arg));
                    if (is_object($arg)) $sb .= ', "objectClass": "'.get_class($arg).'"';
            }
            $sb .= '}';
            if ($i < count($args)-1) $sb .= ', ';
        }
        $sb .= ']); console.log("<" + new Array(120).join("-") + ">"); </script>';
    }
    else {
        $sb = '<script type="text/javascript">console.log("<" + new Array(120).join("-") + ">");console.log("consoleDump: [ERROR] No Parameters Found");console.log("<" + new Array(120).join("-") + ">");</script>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

すべてで動作します!

consoleDump($simpXMLvar, $_SESSION, TRUE, NULL, array( 'one' => 'bob', 'two' => 'bill' ), (object)array( 'one' => 'bob', 'two' => 'bill' ));


<------------------------------------------------[consoleDump: 6 items]------------------------------------------------->
[Object, Object, Object, Object, Object, Object] 
// This drops down to show your variables in JS objects, like:
    0: Object
        count: 4
        objectClass: "SimpleXMLElement"
        type: "object"
        value: Object
        __proto__: Object
        // ...etc...
<-----------------------------------------------------------------------------------------------------------------------> 

1
開発ツールのパフォーマンス低下がごくわずかであることを心配する必要があるのはなぜですか。この関数は、文字通りecho '<pre>';var_dump($var);echo '</pre>';、付加価値ゼロのテキストです。
raveren

@Raverenええ、preDump('value', TRUE, array( 'bob => 'bill' ), (object)array( 'bob => 'bill' )' is quick and easy and gives a nice layout visually in the browser that shows each variable passed in it's own "area" with a type label, thus making debugging quick and easy. And since it's a snippet i keep in my IDE's toolbox, i can recall it with ease on any needed page or while working with any library. But sure, it's just an echo 'pre' を除きます。var_dump`のsimple html周囲にいくつかあり、0の付加価値のあるテキストではありません。笑キック。気に入らない場合は使用しないでください。ただの提案です。
SpYk3HH 2013年

@Raverenそしてあなたがそれが好きなら...あなたは本当に私のアップデートを好きになるでしょう:P
SpYk3HH

1

PHP配列ビューティファイアーこの単純なツールは、print_r()ステートメントなどのPHPの配列またはオブジェクト出力を取得し、カラーコーディングでフォーマットして、データを簡単に読み取れるようにします。 http://phillihp.com/toolz/php-array-beautifier/


var_dump出力では機能せず、引用符が壊れ、より大きなダンプでは非常に混乱します。
raveren

1

さらに別の自家製バージョン:

http://github.com/perchten/neat_html

かなり柔軟性があると思います。これは特定の出力環境を目的としたものではありませんが、出力/印刷または動作を変更する理由を指定できるオプションの引数のセットと、いくつかの永続的な設定があります。




1

PHPで非常に大きな配列を処理している場合、この関数が役立ちます。

function recursive_print ($varname, $varval) {
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;
}

基本的には、各要素が別々の行にある配列全体をダンプします。これは、特定の要素の正しい完全パスを見つけるのに役立ちます。

出力例:

$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';

参照:各キーと値のペアが別々の行にあるPHP配列をエクスポートする方法?


1

最も簡単な(非常にきれいではありませんが)コードについて誰も言及しなかったことに驚いています。読みやすい出力(色やインデントなし)を取得したいだけの場合は、次のように簡単<pre>var_dump動作します。

echo "<pre>";
var_dump($myvariable);
echo "</pre>";

これよりはるかに低いオーバーヘッドを得ることができません!



0

私の好みは、https://github.com/hazardland/debug.phpからのデバッグですこれは、debug という名前の単一の関数のみが含まれているライブラリです(プロジェクトまたはライブラリにその関数をコピーできます)。一般的なdebug() html出力は次のようになります。

ここに画像の説明を入力してください

しかし、次のような同じ機能(4つのスペースでインデントされたタブ)を使用してデータをプレーンテキストとして出力できます(必要に応じてファイルに記録することもできます)。

string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
    bob : "alice"
    1 : 5
    2 : 1.4
object (test2)
    another (test3)
        string1 : "3d level"
        string2 : "123"
        complicated (test4)
            enough : "Level 4"

0

TVarDumper

これはバグのあるPHP関数を置き換えることを目的とした優れたツールでありvar_dumpprint_r複雑なオブジェクト構造で再帰的に参照されるオブジェクトを正しく識別できるため、。また、特定の変数が不明確に再帰的に表示されるのを防ぐために、再帰的な深さコントロールがあります。

参照:TVarDumper.php


循環参照よりも多くの利点がvar_dumpありprint_r、循環参照をサポートできる他の代替ソリューションについては、以下を確認してください。循環参照でのprint_rおよびvar_dumpの使用


他のアイデアについては、次も確認してください。PHPスクリプトをどのようにデバッグしますか?


0

私にとっては、よりシンプルです。私にとっては、インフラストラクチャのインストールxdebugなどを変更するための知識や時間はあまりありません。

そして、他の場合では、たとえば、単純なWP Webサイトにはそれほど必要ありません。

だから私は使用します:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

それは本当に私を助けてくれます。

しかし、私はDevConsole環境を好むので、私はこの素晴らしくてシンプルな関数を使用します:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

少し調整:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)
{
     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     {
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     }
     else
     {
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     }

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = {};
console.log = console.log || function(name, data){};
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
} # end logConsole

0

別のオプションは

composer require symfony/var-dumper --save-dev

次に、使用するファイルdump($var) で、次のような出力が得られますここに画像の説明を入力してください


0

他のソリューションの手順を実際に実行したくなかったため、ここに別の回答を追加する必要がありました。それは非常にシンプルで、拡張機能やインクルードなどを必要とせず、私が好むものです。それは非常に簡単で非常に高速です。

まず、問題の変数をjson_encodeします。

echo json_encode($theResult);

取得した結果をhttp://jsoneditoronline.org/のJSONエディターにコピーし、左側のペインにコピーして、[ コピー ]をクリックすると、JSONが非常に素晴らしいツリー形式できれいに印刷されます。

一人一人に、しかしうまくいけば、これはいくつかの他の人がもう一つの素晴らしいオプションを持つのに役立ちます!:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.