মানব-পঠনযোগ্য এমন একটি ফর্ম্যাটে মাল্টি-লেভেল অ্যারে আউটপুট (লগতে) কীভাবে করবেন?


94

আমি একটি ড্রুপাল সাইটে কাজ করছি এবং ডিবাগিংয়ের সময়, আমাকে সর্বদা দীর্ঘ, নেস্টেড অ্যারে পড়তে হয়। ফলস্বরূপ, আমার জীবনের একটি বড় অংশ তীর, ফিরে এবং ট্যাব কীগুলি ব্যবহার করে 1000+ অক্ষরের স্ট্রিংগুলিকে নেস্টেড, পঠনযোগ্য ফর্ম্যাটে বিভক্ত করতে ব্যয় করে।

ড্রুপাল ডেভসের জন্য, আমি দেভেলের ডিএসএম () ব্যবহার করতে পারি না, কারণ আমি মাল্টি-স্টেপ # আহা / # এজ্যাক্স ফর্মের সাথে কাজ করছি এবং আমি কেবল পর্দায় নয়, ত্রুটি লগতে অ্যারেগুলি আউটপুট করতে পারি।

চাক্ষুষ উদাহরণ:

অশুভ:

অ্যারে ('form_wrapper' => অ্যারে ('# ট্রি' => সত্য, '# টাইপ' => 'ফিল্ডসেট', '# প্রিফিক্স' => '', '#সুফিক্স' => '', '# মূল্যায়ন' = > '', 'নাম' => অ্যারে ('# টাইপ' => 'টেক্সটফিল্ড', '# শিরোনাম' => নাল, '# সাইজ' => 60, '# মাপ দৈর্ঘ্য' => 60, '# প্রয়োজনীয়' = > মিথ্যা, '# বিবরণ' => নুল, '# ভাগ্য' => অ্যারে ('প্লেসোল্ডার' => 'ইমেল',), '# পোস্ট' => অ্যারে ('ফর্ম_উপর' => অ্যারে ('নাম' => '', 'পাস' => '',),
...

ভাল:

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', 
        ), 

সম্পাদনা : দুঃখিত, "স্ক্রিনে আউটপুট না" দ্বারা, আমি বোঝাতে চেয়েছি ড্রুপালের সিস্টেম বার্তাগুলির মাধ্যমে যেখানে ক্লিকযোগ্য, নেস্টেড ফর্ম্যাটে (ডিভেল.মডিউল ব্যবহার করে) অ্যারে আউটপুট করা সম্ভব।


4
<? পিএইচপি প্রতিধ্বনি '<pre>' .প্রিন্ট_আর (ray অ্যারে, 1) '</ translation>'; ?>
রফিনাস

উত্তর:


210

আপনার যদি অ্যাপাচি ত্রুটি লগতে একটি ত্রুটি লগ করতে হয় তবে আপনি এটি চেষ্টা করতে পারেন:

error_log( print_r($multidimensionalarray, TRUE) );

4
দেখে মনে হচ্ছে এটি print_r(ছোট হাতের)। print_Rসত্যিই কি কাজ করে?
ইভানর্ম্মফি

ধন্যবাদ @ অখিলরাজএনএস আপনি কীভাবে আমাকে inোকানো ক্যোয়ারী বা এই লগ বার্তার উপরে নির্বাহ করা কোনও প্রশ্ন জিজ্ঞাসা করতে পারেন সে সম্পর্কে আমাকে আরও বলতে পারেন?
অঙ্কিত সুতার

@ankitsuthar আপনি কি এসকিউএল ক্যোয়ারী বলতে চাইছেন?
অখিলরাজ এনএস

হ্যাঁ তবে আমি এটি সিআই-এর শেষ ক্যোয়ারী ফাংশন দ্বারা পেয়েছি। আসলে, আমি এমন একটি ডেটা লগ করতে চাই যা সন্নিবেশ বা সম্পাদিত, মুছে ফেলা হয়।
অঙ্কিত সুথার

এটি ডাম। এটি নতুন লাইনের অক্ষরগুলিকে \nআসল নিউলাইনগুলির পরিবর্তে আক্ষরিক হিসাবে আউটপুট করে ।
ওথিউস

22

http://php.net/manual/en/function.print-r.php এই ফাংশনটি আউটপুট ফর্ম্যাট করতে ব্যবহৃত হতে পারে,

$output = print_r($array,1);

$outputস্ট্রিং ভেরিয়েবল, এটি অন্যান্য স্ট্রিংয়ের মতো লগইন করা যায়। খাঁটি পিএইচপি আপনি ব্যবহার করতে পারেনtrigger_error

প্রাক্তন trigger_error($output);

http://php.net/manual/en/function.trigger-error.php

আপনার যদি এটি এইচটিএমএলতেও ফর্ম্যাট করতে হয় তবে আপনি <pre>ট্যাগ ব্যবহার করতে পারেন


4
প্রশ্নটি পড়ুন - ওপিকে লগ আউটপুট জন্য করতে হবে - স্ক্রিন আউটপুট নয়।
ম্যাট

@ ম্যাট উত্তরটি পড়ুনif you need to format it also in html
কোড-জাফ

@ ফাইভেল, আমি চেষ্টা করি লগ ফাইলে আউটপুট প্রেরণ করা যায় তা বোঝাতে যদি আপনি নিজের উত্তরটি পরিষ্কার করে দেন, আমি আমার -1 মুছে ফেলব।
ম্যাট

4
@Fifll একটি ছোট সমস্যা রয়েছে trigger_errorএতে বার্তাগুলিকে সর্বাধিক 1024 দৈর্ঘ্য বা এর মতো কিছু সীমাবদ্ধ করে। কিছু দীর্ঘ var_exports/ print_rস্ট্রিংগুলি কাটা বন্ধ করা। এটি সাধারণ কাঠামোর জন্য দরকারী।
মিহাই স্টানকু

7

সাধারণ জিনিস:

ব্যবহার print_r, var_dumpবা var_exportএটা প্রশংসনীয় চমত্কারভাবে আপনি এইচটিএমএল মোডে নেই অথবা @Joel লারসন বলেন আপনি একটি সবকিছু মোড়ানো দৃশ্য সোর্স মোডে ফলাফলের তাকান করতে হবে <pre>ট্যাগ।

print_r পাঠযোগ্যতার জন্য সেরা তবে এটি নাল / মিথ্যা মানগুলি মুদ্রণ করে না।

var_dump ধরণের মান এবং দৈর্ঘ্য এবং নাল / মিথ্যা মানগুলি পরীক্ষা করার জন্য সেরা।

var_exportএটি সিমিলার var_dumpতবে এটি ডাম্পড স্ট্রিং পেতে ব্যবহার করা যেতে পারে।

এগুলির যে কোনওটিই দিয়ে দেওয়া ফর্ম্যাটটি সোর্স কোডে সঠিকভাবে ইন্টেন্ট করা হয়েছে এবং var_exportলগিংয়ের জন্য এটি ব্যবহার করা যেতে পারে যেহেতু এটি ডাম্পড স্ট্রিংটি ফিরে আসতে ব্যবহার করা যেতে পারে।

উন্নত জিনিস:

var_dumpএইচটিএমএল ফর্ম্যাটযুক্ত স্ট্রিংগুলি কাঁচা ডাম্প ফর্ম্যাট হিসাবে নয় এটি পিএইচপি- র জন্য xdebug প্লাগ-ইন ব্যবহার করুন এবং আপনাকে বিন্যাসের জন্য যে কাস্টম ফাংশনটি ব্যবহার করতে চান তা সরবরাহ করতে দেয়।


4
উত্তর পড়ুন var_exportআপনি একটি স্ট্রিং ফিরে করতে পারবেন।
মিহাই স্টানকু

2

Drupal এর এর devel মডিউল বেশী যে ফরম্যাট অ্যারে এবং বস্তু প্রিন্ট লগ ফাইল সহ অন্যান্য দরকারী ফাংশন আছে। Http://ratatosk.net/drupal/tutorials/debugging-drupal.html এ গাইডটি দেখুন

ডিডি ()

সাইটের টেম্প ডিরেক্টরিতে "drupal_debug.txt" নামে একটি ফাইলের কোনও ভেরিয়েবল লগ করে। এই ফাংশন থেকে সমস্ত আউটপুট লগ ফাইলে সংযুক্ত করা হয়, আপনার কোডটি পরিবর্তন করার সাথে সাথে কোনও ভেরিয়েবলের সামগ্রী কীভাবে পরিবর্তিত হয় তা সহজেই দেখা যায়।

আপনি যদি ম্যাক ওএস এক্স ব্যবহার করেন তবে লগিং কনসোলটি লগ ফাইলের বিষয়বস্তু পর্যবেক্ষণ করতে ব্যবহার করতে পারেন।

আপনি যদি লিনাক্সের স্বাদ ব্যবহার করে থাকেন তবে ফাইলটিতে লগ হওয়া ডেটা দেখতে আপনি "লেজ -f drupal_debug.txt" কমান্ডটি ব্যবহার করতে পারেন।


1

এটি আপনাকে সাহায্য করবে

echo '<pre>';

$output = print_r($array,1);

echo '</pre>';

সম্পাদনা

ব্যবহার echo '<pre>';অকেজো, তবে var_export($var);আপনি যা প্রত্যাশা করছেন তা করবে।


4
@ ম্যাট যখন এই প্যারামিটারটি সত্যে সেট করা থাকে, মুদ্রণ_r () তথ্যটি প্রিন্ট না করে ফিরিয়ে দেবে।
কোড-জাফ

0

আপনি একটি প্রাক ট্যাগের মধ্যে একটি var_dump () ব্যবহার করতে সক্ষম হওয়া উচিত। অন্যথায় আপনি ডাম্প_আরএফপি: https://github.com/leeoniya/dump_r.php এর মতো লাইব্রেরি ব্যবহার করে দেখতে পারেন

আমার সমাধানটি ভুল। ওপি লগ ফাইলে সংরক্ষণের জন্য ফাঁকা স্থানের সাথে ফর্ম্যাটযুক্ত একটি সমাধান খুঁজছিল।

একটি সমাধান হতে পারে var_dump দিয়ে আউটপুট বাফারিং ব্যবহার করা, তারপরে লগ ফাইলটিতে ফর্ম্যাট করার জন্য খালি স্পেস সহ সমস্ত ট্যাব str_replace ()।


প্রশ্নটি পড়ুন - ওপিকে লগ আউটপুট জন্য করতে হবে - স্ক্রিন আউটপুট নয়।
ম্যাট

আমি প্রশ্নটি পড়েছি। গত সামান্য মন্তব্য মিস। আমাকে জানতে দেওয়ার জন্য ধন্যবাদ। এই সমাধানটি তখন কাজ করে না।
জোয়েল লারসন

0

আমি কেবল আশ্চর্য হই যে কেন আমি কোনও অ্যারে ডিবাগ করিতে পছন্দ করি না কেন সেই পদ্ধতিটি কেউ ব্যবহার বা পরামর্শ দেয় না:

error_log(json_encode($array));

আমার ব্রাউজারের পাশে আমি tailআমার সার্ভারে কনসোল যেমন লগইন করি ।

tail -f /var/log/apache2/error.log
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.