web-dev-qa-db-ja.com

PHP var_dump()の値が値ごとに1行表示する

Var_dump($ _ variable)をエコーすると、次のようなすべての変数と値で1つの長い折り返し行が得られます

["kt_login_user"]=>  string(8) "teacher1" ["kt_login_id"]=>  string(3) "973" ["kt_campusID"]=>  string(4) "9088" ["kt_positionID"]=>  string(1) "5" 

読みやすくするために、各値を独自の行に表示する方法はありますか?このようなもの:

["kt_login_user"]=>  string(8) "teacher1" 
["kt_login_id"]=>  string(3) "973" 
["kt_campusID"]=>  string(4) "9088" 
["kt_positionID"]=>  string(1) "5"
60
user1320318

はい、<pre>でラップしてみてください。例:

echo '<pre>' , var_dump($variable) , '</pre>';
83
phirschybar

私は通常、配列の出力を処理するための素敵な関数を持っています。デバッグ時に少しきれいにするためです。

_function pr($data)
{
    echo "<pre>";
    print_r($data); // or var_dump($data);
    echo "</pre>";
}
_

それからちょうどそれを呼ぶ

_pr($array);
_

または、そのようなエディターがある場合は、スニペットを保存して、ビルドする各プロジェクトまたは簡単なテストだけが必要な各ページの関数を作成する代わりに、スニペットにすばやくアクセスできるようにします。

_print_r_の場合:

_echo "<pre>", print_r($data, 1), "</pre>";
_

var_dump()の場合:

_echo "<pre>", var_dump($data), "</pre>";
_

上記をPHP Stormと組み合わせて使用​​します。prタブコマンドとして設定しました。

34
Dave

私もこの問題を調査しましたが、正しい答えが見つかりませんでした。これは私にはうまくいきません:

echo '<pre>' . var_dump($variable) . '</pre>';

これは、改行を含む配列の素敵な表示を提供しません(Firefox 31.3.0を使用しています)

しかし、いくつかの実験の後、これは問題を解決しました(最初にphpが閉じられることに注意してください):

... ?> <pre><?php echo var_dump($variable) ?></pre> <?php ...

これで問題が解決し、読みやすい配列がブラウザに表示されます。タグがPHPでラップされていないことがわかります。 echo var_dump部分のみです。

14
Mark

XDebug がインストールされている場合は、var_dump交換。引用:

Xdebugは、変数を表示するためのPHPのvar_dump()関数を置き換えます。 Xdebugのバージョンには、タイプごとに異なる色が含まれており、配列要素/オブジェクトプロパティの量、最大の深さ、および文字列の長さに制限があります。変数の表示を処理する他の関数もいくつかあります。

次の設定のいくつかを微調整することになるでしょう。

Xdebugの変更されたvar_dump()関数の出力を制御する多くの設定があります:xdebug.var_display_max_children、xdebug.var_display_max_dataおよびxdebug.var_display_max_depth。これら3つの設定の効果は、例を使用して最もよくわかります。以下のスクリプトは、それぞれ異なる設定で4回実行されます。タブを使用して、違いを確認できます。

ただし、XDebugを使用すると、コードが読み込まれた直後であっても、コードの速度が大幅に低下することに注意してください。実稼働サーバーで実行することはお勧めできません。しかし、とにかく、実稼働サーバーでvar_dumpingをしているわけではありませんか?

12
dm03514

var_export は素敵な出力を提供します。ドキュメントの例:

$a = array (1, 2, array ("a", "b", "c"));
echo '<pre>' . var_export($a, true) . '</pre>';

出力されます:

array (
  0 => 1,
  1 => 2,
  2 => 
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
11
Tieme

私にとって正しい答えは

_echo '<pre>' . var_export($var, true) . '</pre>';
_

var_dump($var)およびvar_export($var)は文字列を返さないので、var_export($var, true)を使用して_var_export_が結果を値として返すようにする必要があります。

10

押すことができます Ctrl+U ソースコードを表示します。ほとんどのブラウザはそこで出力をきれいにします。

var_dumpは最もgliいデバッグ方法です。

7

出力バッファを使用します: http://php.net/manual/de/function.ob-start.php

<?php
    ob_start();
    var_dump($_SERVER) ;
    $dump = ob_get_contents();
    ob_end_clean();

    echo "<pre> $dump </pre>";
?>

さらに別のオプションは、出力バッファリングを使用し、dump内のすべての改行を<br>要素に変換することです。

ob_start();
var_dump($_SERVER) ;
echo nl2br(ob_get_clean());
6
Aroddo

ソースの表示および[〜#〜] cli [〜#〜]で機能する何かを必要とする開発者にとって、特に単体テストのデバッグ時に役立ちます。

echo vd([['foo'=>1, 'bar'=>2]]);

function vd($in) {
  ob_start(); 
  var_dump($in);
  return "\n" . preg_replace("/=>[\r\n\s]+/", "=> ", ob_get_clean());
}

利回り:

array(1) {
  [0] => array(2) {
    'foo' => int(1)
    'bar' => int(2)
  }
}
1
Ricky Boyce

Var_export()が大好きです。コピー/貼り付け可能なコードが好きなら、試してください:

echo '<pre>' . var_export($data, true) . '</pre>';

または、色の構文の強調表示のための次のようなものです。

highlight_string("<?php\n\$data =\n" . var_export($data, true) . ";\n?>");
1
Roshimon

私はvar_dump($variable);die();の使用を止めたくなかったし、preタグとループの使用はやりすぎだと思うので、ブラウザでダンプを見ているので、ページを右クリックして選択するだけです。検査します(Chromeを使用しています)。開発者ツールの要素セクションには、非常に読みやすい形式で変数が表示されます。

0
Lucio Mollinedo

同様の解決策を行いました。 「vardump」をこれに置き換えるスニペットを作成しました:

foreach ($variable as $key => $reg) {
    echo "<pre>{$key} => '{$reg}'</pre>";
}
var_dump($variable);die;

PS:ファイル名と行を取得するために、最後のvar_dumpでデータを繰り返しています

したがって、この: - enter image description here これになった: enter image description here

これがあなたを助けるかどうか私に知らせてください。

0
Edilson Borges

個人的には Symfonyのvar dumperコンポーネント によって提供される置換関数が好きです

_composer require symfony/var-dumper_でインストールし、dump($var)を使用します

残りは処理します。出力と少しやり取りできるようにするために、そこに注入されたJSも少しあると思います。

0
apokryfos

<pre>タグでラップして、フォーマットを保持します。

0
SenorAmor