xdebug var_dump가 전체 객체 / 배열을 표시하는 방법


310

내가 사용하고 Xdebug는 에 (php_xdebug-2.1.2-5.3-vc9.dll를) WAMP . var_dump큰 객체 또는 변수를 사용 하면 전체 변수가 표시되지 않습니다.

array
'node' => 
  array
    'my_form' => 
      array
        'form' => 
          array
            ...

xdebug가 없으면 예상대로 표시됩니다. 설명서를 보았지만 해결책을 찾지 못했습니다. xdebug var_dump전체 객체를 표시 하도록이 문제를 해결하는 방법을 아는 사람이 있습니까?


print_r은 모든 중첩 값으로 완전한 배열을 인쇄합니다.
Rashmi Jain

답변:


603

다음은 php.ini에서 구성 가능한 변수입니다.

; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

물론 이것들은 ini_set()php.ini를 수정하고 웹 서버를 다시 시작하고 싶지 않지만 더 깊이 무언가를 신속하게 검사 해야하는 경우에 유용합니다.

ini_set('xdebug.var_display_max_depth', '10');
ini_set('xdebug.var_display_max_children', '256');
ini_set('xdebug.var_display_max_data', '1024');

Xdebug 설정은 공식 문서에 설명되어 있습니다 .


19
나는 당신이 실제로 어떤 정보를 얻을 것으로 기대한다면 display_max_depth5 의 a 는 제정신 이 아니라고 주장 합니다var_dump
Ben Harold

2
@BenHarold 그러면 설정으로 무엇을 추천 하시겠습니까?
Anriëtte Myburgh

6
@ AnriëtteMyburgh 그것은 실제로 코드에 달려 있습니다. 비 복잡한 배열이나 JSON은 5-10 정도면 충분하지만 아마도 Symfony 프레임 워크 객체를 심층적으로 조사하려면 제한이없는 것이 좋습니다. 단 한가지의 제안도 없습니다.
Michael Berkowski

3
지난 6 개월 동안이 답변을 10 번 이상 방문했습니다. Michael Berkowski에게 감사합니다. 나는 당신의 빚에 영원히 있습니다.
링컨 Bergeson

2
@ LincolnBergeson 나도 항상 그것을 찾아야합니다.
Michael Berkowski

38

나는 이것이 매우 오래된 게시물이라는 것을 알고 있지만 이것이 여전히 도움이 될 것이라고 생각했습니다.

json 형식을 읽는 데 익숙하다면 var_dump를 다음으로 바꿀 수 있습니다.

return json_encode($myvar);

나는 이것을 사용하여 깊게 중첩 된 배열을 가진 내가 구축 한 서비스의 문제를 해결하는 데 도움을주었습니다. 이것은 아무것도 자르거나 php.ini 파일을 변경하지 않고도 배열의 모든 레벨을 반환합니다.

또한 json_encoded 데이터는 문자열이므로 오류 로그에 쉽게 쓸 수 있습니다.

error_log(json_encode($myvar));

모든 상황에 가장 적합한 선택은 아니지만 선택입니다!


12
나는이 대답을 좋아한다. 다음과 같은 html 출력이있을 수도 있습니다. return '<pre>'. json_encode ($ myvar, JSON_PRETTY_PRINT). '</ pre>';
David

7
모든 변수가 json_encodeable이 아닐 수도 있습니다. jsonserializable 인터페이스를 구현하지 않는 객체는 빈 배열 "{}"을 반환합니다.
Kristian Sandström

2
또한 json_encoding 무언가가 유형을 표시하지 않으므로 무언가가 적절하게 일치하는지 식별하기가 더 어렵습니다.
SEoF

13

또는 대안을 사용할 수 있습니다.

https://github.com/kint-php/kint

그것은 제로 설정으로 작동하며 Xdebug의 var_dump보다 훨씬 많은 기능을 가지고 있습니다. Kint를 사용하여 중첩 된 제한을 무시하려면 다음을 사용하십시오.

 +d( $variable ); // append `+` to the dump call

12

나는 이것이 늦었다는 것을 알고 있지만 약간의 사용 가능성이 있습니다.

echo "<pre>";
print_r($array);
echo "</pre>";

21
print_r()입니다 하지 위해서 var_dump를 대체.
AnrDaemon

환상적인 답변. 감사.
PHPst

@AnrDaemon을 진지하게?
PHPst

var_dump ([거짓]); print_r ([거짓]);
AnrDaemon

나는 이것이 늦다는 것을 알고 있지만 print_r ()은 원하는 것에 따라 var_dump () 대신 사용할 수 있습니다! 나는 종종 배열의 구조를 보여주고 싶기 때문에 더 이상 var_dump ()를 사용하지 않으며 IMO print_r ()는 var_dump ()보다 훨씬 우수합니다.
가장 좋은 프로그래머


3

추천하고 싶습니다 var_export($array)-유형을 표시하지 않지만 코드에서 사용할 수있는 구문을 생성합니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.