私はdrupalサイトで作業しており、デバッグ時には常に、入れ子になった長い配列を読む必要があります。その結果、私の人生の大部分は、矢印キー、リターンキー、タブキーを使用して、1000以上の文字列をネストされた読み取り可能な形式に分割することに費やされています。
drupal devsの場合、マルチステップの#ahah /#ajaxフォームで作業しているため、develのdsm()を使用できません。エラーログには配列のみを出力できます。スクリーン。
視覚的な例:
悪の:
array( 'form_wrapper' => array( '#tree' => true、 '#type' => 'fieldset'、 '#prefix' => ''、 '#suffix' => ''、 '#value' = > ''、 'name' => array( '#type' => 'textfield'、 '#title' => NULL、 '#size' => 60、 '#maxlength' => 60、 '#required' = > false、 '#description' => NULL、 '#attributes' => array( 'placeholder' => 'Email'、)、 '#post' => array( 'form_wrapper' => array( 'name' => ''、 'pass' => ''、)、
良い:
array (
'form_wrapper' => array (
'#tree' => true,
'#type' => 'fieldset',
'#prefix' => '<div>',
'#suffix' => '</div>',
'#value' => '',
'name' => array (
'#type' => 'textfield',
'#title' => NULL,
'#size' => 60,
'#maxlength' => 60,
'#required' => false,
'#description' => NULL,
'#attributes' => array (
'placeholder' => 'Email',
),
編集:申し訳ありませんが、「画面に出力しない」とは、drupalのシステムメッセージを介して、クリック可能なネストされた形式で配列を出力できることを意味します(devel.moduleを使用)。
Apacheエラーログにエラーを記録する必要がある場合、これを試すことができます:
error_log( print_r($multidimensionalarray, TRUE) );
http://php.net/manual/en/function.print-r.php この関数は出力のフォーマットに使用でき、
$output = print_r($array,1);
$output
は文字列変数であり、他のすべての文字列と同様に記録できます。純粋なphpでは、trigger_error
を使用できます
例trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
htmlでもフォーマットする必要がある場合は、<pre>
タグを使用できます
print_r
、var_dump
、またはvar_export
を使用すると、HTMLモードではなくビューソースモードで結果を表示したり、@ Joel Larsonがすべてを<pre>
タグ。
print_r
は可読性に最適ですが、null/false値を出力しません。
var_dump
は、値のタイプと長さ、およびnull/false値のチェックに最適です。
var_export
はvar_dump
と同様ですが、ダンプされた文字列を取得するために使用できます。
これらのいずれかによって返される形式は、ソースコード内で正しくインデントされ、var_export
は、ダンプされた文字列を返すために使用できるため、ログに使用できます。
PHPにxdebugプラグインを使用すると、var_dump
sが生のダンプ形式ではなくHTML形式の文字列として出力され、フォーマットに使用するカスタム関数を提供することもできます。
Drupalの 開発モジュール には、フォーマットされた配列やオブジェクトをログファイルに出力できる機能など、他の便利な機能があります。 http://ratatosk.net/drupal/tutorials/debugging-drupal.html のガイドを参照してください
dd()
サイトの一時ディレクトリにある「drupal_debug.txt」という名前のファイルに変数を記録します。この関数からのすべての出力はログファイルに追加されるため、コードを変更すると変数の内容がどのように変化するかを簡単に確認できます。
Mac OS Xを使用している場合、ログコンソールを使用してログファイルの内容を監視できます。
Linuxのフレーバーを使用している場合は、コマンド「tail -f drupal_debug.txt」を使用して、ファイルに記録されているデータを監視できます。
これはあなたを助けます
echo '<pre>';
$output = print_r($array,1);
echo '</pre>';
編集
echo '<pre>';
を使用しても意味がありませんが、var_export($var);
は期待どおりの動作をします。
Preタグ内でvar_dump()を使用できるはずです。それ以外の場合は、dump_r.phpのようなライブラリの使用を検討できます。 https://github.com/leeoniya/dump_r.php
私の解決策は間違っています。 OPは、ログファイルに保存するスペースでフォーマットされたソリューションを探していました。
解決策としては、出力バッファリングをvar_dumpで使用し、次にスペースを含むすべてのタブをstr_replace()して、ログファイルでフォーマットすることが考えられます。