var_dump, var_export 및 print_r의 차이점


126

무엇 사이의 차이 var_dump, var_export그리고 print_r?


14
때로는 다른 사람에게 매뉴얼을 읽고 더 잘 이해하도록 요청하는 것이 더 쉽습니다.
Deepak Lamichhane

11
@Your Common Sense SO 답변은 종종 PHP 매뉴얼보다 명확하고 간결하며 실행 가능하며 기본적으로 항상 참조하기 쉽습니다.
Mark Fox

답변:


194

var_dump 는 디버깅 목적입니다. var_dump항상 결과를 인쇄합니다.

// var_dump(array('', false, 42, array('42')));
array(4) {
  [0]=> string(0) ""
  [1]=> bool(false)
  [2]=> int(42)
  [3]=> array(1) {[0]=>string(2) "42")}
}

print_r 도 디버깅 목적으로 사용되지만 멤버 유형은 포함하지 않습니다. 배열의 요소 유형을 알고 있으면 사용하는 것이 좋지만 그렇지 않으면 오도 할 수 있습니다. print_r기본적으로 결과가 인쇄되지만 선택적$return매개 변수를 사용하여 대신 문자열로 반환 할 수 있습니다.

Array (
    [0] =>
    [1] =>
    [2] => 42
    [3] => Array ([0] => 42)
)

var_export 는 유효한 PHP 코드를 인쇄합니다. 일부 값을 계산하고 결과를 다른 스크립트에서 상수로 사용하려는 경우에 유용합니다. 참고var_export참고주기 / 재귀 배열을 처리하는 반면, 수var_dumpprint_r이 있는지 확인합니다. var_export기본적으로 결과가 인쇄되지만 선택적$return매개 변수를 사용하여 대신 문자열로 반환 할 수 있습니다.

array (
  0 => '',
  1 => false,
  2 => 42,
  3 => array (0 => '42',),
)

개인적 var_export으로 간결하고 정확한 최고의 절충안 이라고 생각 합니다.


51
그주의 var_export의 특성, 음, 재귀 배열에 끔찍한 재귀 죽음을 죽을 것 때문에. print_rvar_dump(하지만하지 완벽하게 확인, 후자에 대해 나는 보통 사용하지 않기 때문에) 그 문제가 없습니다. var_export($_GLOBALS);예를 들어 (자체를 포함하는) 하지 마십시오 . :)
pinkgothic

@ ftrotter 나는 항상 그 의견이 그 호기심을 잘 설명한다고 생각했지만 거기에 답에 짧은 메모를 추가했습니다.
phihag

1
print_r () 및 var_export ()가 출력하는 대신 문자열을 반환하도록 할 수 있지만 var_dump ()는 할 수 없다는 것을 추가해야합니다. 또한 혼란 스럽기 때문에 var_export ()가 마음에 들지 않습니다. 정의되지 않은 상수 SOMECONST를 내보내려고하면 텍스트 문자열 'SOMECONST'가 나타납니다. 따라서 NULL, 0, ""라고 말하지는 않지만 실제로 문자열이라고 가정합니다 (알림도 던져야한다고 가정합니다).
userfuser

1
var_export는 따옴표 / 백 슬래시 보호와 같은 문자열을 안전하게 나타내는 데 좋습니다.
dkellner

1
개인적으로 나는 var_dump출력을 선호 합니다. 너무 나쁘면 출력을 문자열로 반환 할 수 없습니다. 따라서 위의 의견에서 @iconoclast의 정서와 관련이 있습니다. 그러나 선택하는 데 var_export이상 var_dump이 사용 사례에 대한 것이 나에게 허용됩니다. 완전성을 위해이 관련 기능 요청을 참고하십시오 .
Paul van Leeuwen

3

var_dumpvar_export(로부터 이런 관한 설명서 )

var_export ()는 주어진 변수에 대한 구조화 된 정보를 얻습니다. var_dump ()와 유사하지만 한 가지 예외가 있습니다. 반환 된 표현은 유효한 PHP 코드입니다.

데이터 유형 및 요소 크기와 같은 추가 정보 print_rvar_dump내보내는 것과 다릅니다 .

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