PHP에서 echo, print 및 print_r의 차이점은 무엇입니까?


197

나는 많이 사용 echo하고 print_r거의 사용하지 않습니다 print.

느낌 echo은 매크로 print_r이며의 별칭입니다 var_dump.

그러나 이것이 차이점을 설명하는 표준 방법은 아닙니다.


3
print_r은 var_dump의 별칭이 아니며 다른 형식으로 출력됩니다. 특히 var_dump의 출력에는 각 변수의 "유형"도 포함됩니다.
thomasrutter


추가하고 유용 할 수있는 또 다른 세부 사항은 var_dump가 매우 긴 텍스트를 자르고 ...를 표시하고 나머지 길이를 나타내는 것입니다.
요르단

답변:


186

print그리고 echo거의 동일하거나; 둘 다 문자열을 표시하는 언어 구성입니다. 차이는 미묘하다 : print반면가 식에 사용될 수 있도록 (1)의 반환 값이 echo가지고 void리턴 타입; echo이러한 사용법은 드물지만 여러 매개 변수를 사용할 수 있습니다. echo보다 약간 빠릅니다print . (개인적으로는 항상을 사용 echo하고 결코 사용 하지 않습니다 print.)

var_dump변수의 유형 및 하위 항목의 유형 (배열 또는 객체 인 경우)을 포함하여 변수의 세부 덤프를 인쇄합니다. print_r보다 인간이 읽을 수있는 형태로 변수를 인쇄합니다 : 문자열은 인용되지 않으며, 유형 정보는 생략되고, 배열 크기는 제공되지 않습니다.

var_dumpprint_r내 경험에 따르면 디버깅 할 때보 다 일반적으로 더 유용합니다 . 변수에 어떤 값 / 유형이 있는지 정확히 모르는 경우 특히 유용합니다. 이 테스트 프로그램을 고려하십시오.

$values = array(0, 0.0, false, '');

var_dump($values);
print_r ($values);

를 사용 print_r하면 0and 및 0.0또는 falseand 의 차이점을 알 수 없습니다 ''.

array(4) {
  [0]=>
  int(0)
  [1]=>
  float(0)
  [2]=>
  bool(false)
  [3]=>
  string(0) ""
}

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

1
언어 구성이란 무엇입니까?
omg

1
@ 쇼어-그것은 기능이 아닌 언어에 내장 된 것입니다. 그들은 일반적으로 매우 빠르며 정상적인 기능처럼 정확하게 작동하지 않습니다.
alex

3
이 의견에서 식별 된 부정확성을 수정하기 위해 2 년 후 수정되었습니다. 고마워요, 6 월 7 일 '10 일에 자야 했어요. ;-)
John Kugelman 2018 년


5
변호사 모바일에 빨리!
John Kugelman

100

에코

  • 쉼표로 구분 된 하나 이상의 문자열을 출력합니다.
  • 반환 값 없음

    예 : echo "String 1", "String 2"

인쇄

  • 단일 문자열 만 출력
  • 를 반환 1하므로 표현식에 사용할 수 있습니다.

    예 : print "Hello"

    또는, if ($expr && print "foo")

print_r ()

  • 하나의 값을 사람이 읽을 수있는 표현으로 출력 합니다
  • 문자열뿐만 아니라 배열과 객체를 포함한 다른 유형을 받아 들여 읽을 수 있도록 형식화
  • 디버깅 할 때 유용
  • 두 번째 선택적 인수가 제공되면 출력을 반향 값으로 반환 할 수 있습니다 (에코 대신)

var_dump ()

  • 하나 이상의 값을 쉼표로 구분 하여 사람이 읽을 수있는 표현을 출력 합니다.
  • 문자열뿐만 아니라 배열과 객체를 포함한 다른 유형을 받아 들여 읽을 수 있도록 형식화
  • 다른 출력 형식을 사용하여 print_r()예를 들어 값 유형 을 인쇄 합니다.
  • 디버깅 할 때 유용
  • 반환 값 없음

var_export ()

  • 사람이 읽을 수 있고 PHP가 실행할 수있는 임의의 값을 하나의 값으로 출력합니다.
  • 문자열뿐만 아니라 배열과 객체를 포함한 다른 유형을 받아 들여 읽을 수 있도록 형식화
  • 모두 다른 출력 형식을 사용 print_r()하고 var_dump()- 출력을 발생하여 유효 PHP 코드입니다!
  • 디버깅 할 때 유용
  • 두 번째 선택적 인수가 제공되면 출력을 반향 값으로 반환 할 수 있습니다 (에코 대신)

노트:

  • print표현식에 사용할 수는 있지만 코드 가독성이 나쁘고 유용하지 않기 때문에 사람들은 그렇게하지 않는 것이 좋습니다. 우선 순위 규칙이 다른 연산자와 상호 작용할 때 혼동 될 수 있습니다. 이 때문에 개인적으로 그것을 사용할 이유가 없습니다 echo.
  • 반면 echoprint언어 구조이며, print_r()var_dump()/ var_export()일반 함수입니다. 인수를 echo또는 로 묶는 괄호가 필요하지 않습니다 print( 또는 인수를 사용하는 경우 표현식에서와 같이 취급됩니다).
  • var_export()값을 나중에 다시 읽을 수있는 유효한 PHP 코드를 반환 하지만 프로덕션 코드에이 값을 사용하면을 사용해야하기 때문에 보안 취약점을 쉽게 도입 할 수 있습니다 eval(). 값을 저장하고 다시 읽는 대신 JSON과 같은 형식을 사용하는 것이 좋습니다. 속도는 비슷할 것입니다.

3
당신이 원하는 것시기에 대한 그냥 빨리 참고 echo $a, $b;그냥 할 수있는 경우 구문을 echo $a . $b;: 중 $ a 또는 $ B는 정말 큰 문자열이있는 경우 그 전에 메모리에 문자열의 별도의 연결된 버전을 만들기 추가 메모리와 시간을 사용 후, 후자의 브라우저로 출력을 시작할 수 있습니다.
thomasrutter

물론 당신도 사용할 수 echo $a; echo $b;있습니다.
thomasrutter

16

그냥에 추가 할 존의 대답은 , echo당신이 페이지에 내용을 인쇄하는 데 사용할 수있는 유일한 것이어야한다.

print약간 느립니다. var_dump()그리고 print_r()디버그 경우에만 사용되어야한다.

또한 언급 할만큼 가치가 있다는 것입니다 print_r()var_dump()기본적으로 에코에 두 번째 인수를 추가 할 것입니다 print_r()그것을 대신 예를 반환받을 true로 적어도 그 평가됩니다 print_r($array, TRUE).

에코와 리턴의 차이점은 다음과 같습니다.

  • echo : 값을 즉시 출력에 인쇄합니다.
  • returning : 함수의 출력을 문자열로 반환합니다. 로깅 등에 유용

문제를 제기했기 때문에 echoing과 returning 의 차이점은 무엇 입니까?
데이비드는 모니카를

2
와우 나는 반환 매개 변수에 대해 알고 싶습니다 :( 기본적으로 $ foo = print_r ($ array, true); 다른 방법으로 (로그, 테이블 등으로) 사용할 수 있습니다.
FryGuy

print_rPHP를 코딩하는 동안 반환 매개 변수를 많이 사용했습니다 . 그러나 나는 글을 쓰는 경향이 있었다 print_r( $foo, 1 );. 입력하는 것이 더 빠릅니다.;) 이것에 관해서는 이름 print_r이 매우 설명 적이 지 않기 때문에 가독성에 대해서는별로 신경 쓰지 않습니다 .
exhuma

var_dump()출력에 여러 개의 인수를 허용 할 수 print_r()있기 때문에 두 번째 인수는 지원하지 않는 것처럼 두 번째 인수를 지원하지 않습니다 var_dump().
thomasrutter

@thomasrutter True, 내가 왜 썼는지 모르겠습니다.
alex

6
echo

반환 유형이 없습니다

print

반품 유형이 있습니다

print_r()

포맷 된대로 출력


5

echo , print , print_rvar_dump 의 차이점 은 매우 간단합니다.

에코

echo 는 실제로 함수가 아니라 출력을 인쇄하는 데 사용되는 언어 구조입니다. 인쇄보다 약간 빠릅니다.

echo "Hello World";    // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World

$var_1=55;
echo "$var_1";               // this will print 55
echo "var_1=".$var_1;        // this will print var_1=55
echo 45+$var_1;              // this will print 100

$var_2="PHP";
echo "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with echo (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index  value required)

괄호를 사용하거나 사용하지 않고 echo 문을 사용할 수도 있습니다

echo ("Hello World");   // this will print Hello World

인쇄

에코 구문 인쇄 와 마찬가지로 언어 구문도 실제 함수가 아닙니다. 의 차이 에코인쇄인쇄 단 하나의 인수를 받아 인쇄 반면 1. 반환 항상 에코 에는 반환 값이 없습니다합니다. 따라서 print 문을 표현식에 사용할 수 있습니다.

print "Hello World";    // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1";               // this will print 55
print "var_1=".$var_1;        // this will print var_1=55
print 45+$var_1;              // this will print 100

$var_2="PHP";
print "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with print (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index  value required)

처럼 에코 , 인쇄 또는 괄호없이 사용할 수 있습니다.

print ("Hello World");   // this will print Hello World

print_r

그만큼 에서 print_r () 함수는 변수에 대한 인간이 읽을 수있는 정보를 인쇄하는 데 사용된다. 인수가 배열 인 경우 print_r () 함수는 키와 요소 (객체와 동일)를 인쇄합니다.

print_r ("Hello World");    // this will print Hello World

$var_1=55;
print_r ("$var_1");               // this will print 55
print_r ("var_1=".$var_1);        // this will print var_1=55
print_r (45+$var_1);              // this will print 100

$var_2="PHP";
print_r ("$var_2");                // this will print PHP

$var_3=array(99,98,97)             // this will print Array ( [0] => 1 [1] => 2 [2] => 3 ) 
$var_4=array("P"=>"3","J"=>"4");   // this will print  Array ( [P] => 3 [J] => 4 ) 

var_dump

var_dump 함수는 일반적으로 디버깅에 사용되며 변수 / 배열 / 객체에 대한 정보 (유형 및 값)를 인쇄합니다.

var_dump($var_1);     // this will print  int(5444) 
var_dump($var_2);     // this will print  string(5) "Hello" 
var_dump($var_3);     // this will print  array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 
var_dump($var_4);     // this will print  array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }

3

에코 :

함수가 아닙니다. 반환 값 없음

괄호가 필요하지 않음

인쇄 배열이 아님

인쇄

실제 기능입니다

리턴 타입 1

괄호 필요

인쇄 배열이 아님

Print_r

사람이 읽을 수있는 형식으로 인쇄

따옴표 안에없는 문자열

유형 및 전체와 같은 변수의 세부 정보가 아님

var_dump

요소 유형 및 하위 요소와 같은 변수의 모든 덤프 정보


2
이 답변에는 많은 문제가 있습니다. 실제 함수 print아니며 에코와 같은 언어 구성입니다. 성명서로도 사용할 수 있습니다. echo입니다 하지 성명 않으며 하나에서 사용할 수 있습니다. 괄호 print가 필요 하지 않으며 함수처럼 괄호를 에코 또는 인쇄로 사용할 수 없습니다. 또한 주요 차이점 중 하나를 놓쳤습니다. echo는 여러 문자열을 쉼표로 구분하여 에코합니다.
thomasrutter

2
... 여러 답변이 이미 존재하고 올바른 정보가 포함 된 경우이 답변을 제출했습니다 .
thomasrutter

2

** Echo는 인쇄 할 수 없지만 여러 표현식을 사용할 수 있습니다. Print_r () PHP 함수는 사람이 읽을 수있는 형태로 배열을 반환하는 데 사용됩니다. 단순히 다음과 같이 작성됩니다

![Print_r ($your_array)][1]

2

echo : echo는 괄호를 사용할 필요가없는 언어 구성체이며 여러 매개 변수를 사용하여 void를 리턴 할 수 있습니다.

   void echo (param1,param2,param3.....);

   Example: echo "test1","test2,test3";

print : 괄호를 사용할 필요가없는 언어 구조이므로 매개 변수를 하나만 가져 와서 반환

    1 always.

           int print(param1);

           print "test1";
           print "test1","test2"; // It will give syntax error

prinf : 최소한 하나의 문자열과 형식을 취하고 출력 문자열의 길이를 반환하는 함수입니다.

    int printf($string,$s);

    $s= "Shailesh";
    $i= printf("Hello %s how are you?",$s);    
    echo $i;

    Output : Hello Shailesh how are you?
             27



   echo returns void so its execution is faster than print and printf


0

print_r ()은 값을 인쇄 할 수 있지만 두 번째 플래그 매개 변수가 전달되고 TRUE 인 경우 인쇄 된 결과를 문자열로 리턴하고 표준 출력으로 전송하지 않습니다. var_dump에 대하여. XDebug 디버거가 설치되어 있으면 결과를 훨씬 더 읽기 쉽고 이해하기 쉬운 형식으로 출력합니다.


-1

둘 다 언어 구조입니다. echo는 void를 반환하고 print는 1을 반환합니다. echo는 인쇄보다 약간 빠릅니다.

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