멀티레벨 어레이를 사람이 읽을 수 있는 형식으로 출력하려면 어떻게 해야 합니까?
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_export
HTML 모드가 아닌 뷰 소스 모드에서 결과를 보거나 @Joel Larson이 말한 것처럼 모든 것을 랩으로 감싸면 꽤 잘 될 것입니다.<pre>
태그를 붙입니다.
print_r
가독성에는 최적이지만 null/false 값은 출력하지 않습니다.
var_dump
는 값의 유형과 길이 및 늘/false 값을 확인하는 데 최적입니다.
var_export
와 유사하다var_dump
버려지는 끈을 잡는 데 사용할 수 있어요
이들 중 하나에 의해 반환된 형식은 소스 코드에 올바르게 입력되어 있습니다.var_export
덤프된 문자열을 반환하는 데 사용할 수 있기 때문에 로깅에 사용할 수 있습니다.
고급 정보:
PHP용 xdebug 플러그인을 사용하여 인쇄합니다.var_dump
html 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
'programing' 카테고리의 다른 글
Pylint 경고를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.01.14 |
---|---|
클래스 내에서 정적 메서드를 호출할 수 있습니까? (0) | 2023.01.14 |
전체 MySQL 데이터베이스 복제 (0) | 2023.01.14 |
최대 절전 모드에서 생성된 DDL의 구문 오류 "type= MyISAM"이 잘못되었습니다. (0) | 2023.01.14 |
유사한 데이터를 올바른 방법으로 표를 만드는 방법 (0) | 2023.01.14 |