Saya sedang mengerjakan situs drupal dan saat melakukan debug, saya selalu harus membaca array bersarang yang panjang. Akibatnya, sebagian besar hidup saya dihabiskan dengan menggunakan tombol panah, kembali, dan tab, untuk membagi 1000+ string karakter menjadi format bersarang dan dapat dibaca.
Untuk drupal devs, saya tidak dapat menggunakan devel's dsm (), karena saya bekerja dengan formulir multi-langkah # ahah / # ajax, dan saya hanya dapat menampilkan array ke log kesalahan, bukan ke layar.
Contoh visual:
Jahat:
larik ('form_wrapper' => larik ('#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' => '', 'lulus' => '',),...
Baik:
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',
),
Edit : Maaf, dengan "bukan keluaran ke layar", maksud saya melalui pesan sistem drupal di mana dimungkinkan untuk mengeluarkan array dalam format yang dapat diklik dan bersarang (menggunakan devel.module).
Jawaban:
Jika Anda perlu memasukkan kesalahan ke log kesalahan Apache, Anda dapat mencoba ini:
error_log( print_r($multidimensionalarray, TRUE) );
sumber
print_r
(huruf kecil). Apakahprint_R
benar-benar berfungsi dengan baik?\n
bukan baris baru yang sebenarnya.http://php.net/manual/en/function.print-r.php Fungsi ini dapat digunakan untuk memformat keluaran,
$output = print_r($array,1);
$output
adalah variabel string, dapat dicatat seperti setiap string lainnya. Dalam php murni yang dapat Anda gunakantrigger_error
Ex.
trigger_error($output);
http://php.net/manual/en/function.trigger-error.php
jika Anda perlu memformatnya juga dalam html, Anda dapat menggunakan
<pre>
tagsumber
if you need to format it also in html
trigger_error
membatasi pesan hingga maksimal 1024 panjang atau yang serupa. Membuat beberapa lagivar_exports
/print_r
string terputus. Ini berguna untuk struktur sederhana.Hal-hal sederhana:
Menggunakan
print_r
,var_dump
atauvar_export
harus melakukannya dengan cukup baik jika Anda melihat hasil dalam mode sumber tampilan bukan dalam mode HTML atau seperti yang dikatakan @Joel Larson jika Anda membungkus semuanya dalam<pre>
tag.print_r
paling baik untuk keterbacaan tetapi tidak mencetak nilai null / false.var_dump
paling baik untuk memeriksa jenis nilai dan panjang serta nilai null / false.var_export
mirip denganvar_dump
tetapi dapat digunakan untuk mendapatkan string yang dibuang.Format yang dikembalikan oleh salah satu dari ini diindentasi dengan benar dalam kode sumber dan
var_export
dapat digunakan untuk pencatatan karena dapat digunakan untuk mengembalikan string yang dibuang.Barang lanjutan:
Gunakan plugin xdebug untuk PHP yang akan dicetak
var_dump
sebagai string berformat HTML bukan sebagai format dump mentah dan juga memungkinkan Anda menyediakan fungsi kustom yang ingin Anda gunakan untuk pemformatan.sumber
var_export
memungkinkan Anda untuk mengembalikan string.Modul Devel Drupal memiliki fungsi berguna lainnya termasuk yang dapat mencetak array dan objek yang diformat ke file log. Lihat panduannya di http://ratatosk.net/drupal/tutorials/debugging-drupal.html
sumber
Ini akan membantumu
echo '<pre>';
$output = print_r($array,1);
echo '</pre>';
EDIT
menggunakan
echo '<pre>';
tidak berguna, tetapivar_export($var);
akan melakukan hal yang Anda harapkan.sumber
Anda harus bisa menggunakan var_dump () di dalam tag pra. Jika tidak, Anda dapat menggunakan perpustakaan seperti dump_r.php: https://github.com/leeoniya/dump_r.phpSolusi saya salah. OP sedang mencari solusi yang diformat dengan spasi untuk disimpan dalam file log.
Solusinya mungkin menggunakan buffering keluaran dengan var_dump, lalu str_replace () semua tab dengan spasi untuk memformatnya dalam file log.
sumber
Saya hanya bertanya-tanya mengapa tidak ada yang menggunakan atau merekomendasikan cara saya lebih suka men-debug array:
Di sebelah browser saya,
tail
saya log server saya di konsol misalnya.tail -f /var/log/apache2/error.log
sumber