programing

멀티레벨 어레이를 사람이 읽을 수 있는 형식으로 출력하려면 어떻게 해야 합니까?

copysource 2023. 1. 14. 10:33
반응형

멀티레벨 어레이를 사람이 읽을 수 있는 형식으로 출력하려면 어떻게 해야 합니까?

DRUPAL 사이트에서 작업하고 있으며 디버깅을 할 때는 항상 긴 중첩 어레이를 읽어야 합니다.그 결과, 제 삶의 많은 부분이 화살표, 리턴, 탭 키를 사용하여 1000개 이상의 문자열을 네스트된 읽기 가능한 형식으로 분할하는 데 소비되고 있습니다.

drupal dev의 경우 multi-step #ahah/#ajax 폼을 사용하고 있기 때문에 devel의 dsm()을 사용할 수 없고, 에러 로그에만 출력할 수 있고 화면에는 출력할 수 없습니다.

시각적인 예:

악:

배열(#> => > = > [#> > > [#> > > [#> [#; '메일, ## 포스트'; 배열(file_P)r' => 어레이 ('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_exportHTML 모드가 아닌 뷰 소스 모드에서 결과를 보거나 @Joel Larson이 말한 것처럼 모든 것을 랩으로 감싸면 꽤 잘 될 것입니다.<pre>태그를 붙입니다.

print_r가독성에는 최적이지만 null/false 값은 출력하지 않습니다.

var_dump는 값의 유형과 길이 및 늘/false 값을 확인하는 데 최적입니다.

var_export와 유사하다var_dump버려지는 끈을 잡는 데 사용할 수 있어요

이들 중 하나에 의해 반환된 형식은 소스 코드에 올바르게 입력되어 있습니다.var_export덤프된 문자열을 반환하는 데 사용할 수 있기 때문에 로깅에 사용할 수 있습니다.

고급 정보:

PHP용 xdebug 플러그인을 사용하여 인쇄합니다.var_dumphtml HTML 식형의로 。원시 덤프 형식이 아닙니다.또, 포맷에 사용하는 커스텀 함수를 지정할 수도 있습니다.

어레이를 디버깅할 때 사용하는 방법이나 권장하는 방법이 없는 이유일 뿐입니다.

error_log(json_encode($array));

옆에 있는 I는tail내 서버 로그인이 콘솔에 표시됩니다(예:

tail -f /var/log/apache2/error.log

Drupal의 Devel 모듈에는 포맷된 배열과 객체를 로그 파일에 인쇄할 수 있는 기능 등 기타 유용한 기능이 있습니다.http://ratatosk.net/drupal/tutorials/debugging-drupal.html 에서 가이드를 참조해 주세요.

dd()

모든 변수를 사이트의 임시 디렉터리에 있는 "dropal_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);이치

사전 태그 내에서 var_dump()를 사용할 수 있어야 합니다.그 이외의 경우 dump_r.drivate 등의 라이브러리를 사용할 수 있습니다.https://github.com/leeoniya/dump_r.php

내 해결책은 틀렸다.OP는 로그 파일에 저장할 공간으로 포맷된 솔루션을 찾고 있었습니다.

해결책은 출력 버퍼링을 var_dump와 함께 사용한 후 공백이 있는 모든 탭을 사용하여 로그 파일에서 형식을 지정하는 것입니다.

구문

print_r(variable, return);

변수는 필수입니다.정보를 반환할 변수를 지정합니다.

return 옵션.true로 설정하면 이 함수는 정보를 반환합니다(인쇄하지 않음).기본값은 false 입니다.

error_log( print_r(<array Variable>, TRUE) );

언급URL : https://stackoverflow.com/questions/11884891/how-to-output-to-a-log-a-multi-level-array-in-a-format-that-is-human-readable

반응형