수색…


소개

동적 인 대화 형 PHP 프로그램을 만들려면 변수와 그 값을 출력하는 것이 유용합니다. PHP 언어는 여러 가지 값 출력 방법을 허용합니다. 이 주제에서는 PHP에서 값을 인쇄하는 표준 메소드와이 메소드를 사용할 수있는 위치에 대해 설명합니다.

비고

PHP의 변수는 다양한 유형이 있습니다. 유스 케이스에 따라 렌더링 된 HTML 형식으로 브라우저에 출력하거나 디버깅을 위해 출력하거나 터미널에 출력 할 수 있습니다 (명령 줄을 통해 응용 프로그램을 실행하는 경우).

다음은 변수를 출력하기 위해 가장 일반적으로 사용되는 메소드 및 언어 구조 중 일부입니다.

  • echo - 하나 이상의 문자열을 출력합니다.
  • print - 문자열을 출력하고 1 (항상)을 반환합니다.
  • printf - 형식화 된 문자열을 출력하고 출력 된 문자열의 길이를 반환합니다.
  • sprintf - 문자열을 형식화하고 형식화 된 문자열을 반환합니다.
  • print_r - 인수의 내용을 사람이 읽을 수있는 문자열로 출력하거나 반환합니다.
  • var_dump - 타입과 값을 포함한 인자의 내용에 대한 사람이 읽을 수있는 디버깅 정보를 출력합니다.
  • var_export - 변수의 문자열 표현을 유효한 PHP 코드로 출력하거나 반환합니다.이 값을 사용하여 값을 다시 만들 수 있습니다.

참고 : 문자열로 출력에 객체를하려고 할 때, PHP는 문자열로 변환하려고합니다 (호출하여 __toString() - 객체가 이러한 방법이있는 경우). 사용할 수없는 경우 Object of class [CLASS] could not be converted to string 와 유사한 오류 Object of class [CLASS] could not be converted to string . 이 경우 객체를 추가로 검사해야합니다. 구조화 뷰 배열 및 객체 출력 : 참조하십시오.

에코 및 인쇄

echoprint 는 함수가 아닌 언어 구조입니다. 이것은 함수가하는 것처럼 인자 주위에 괄호를 사용할 필요가 없다는 것을 의미합니다 (거의 모든 PHP 표현식에 항상 괄호를 추가 할 수 있기 때문에 echo("test") 도 해를 끼치 지 않습니다). 변수, 상수 또는 표현식의 문자열 표현을 출력합니다. 배열이나 객체를 인쇄하는 데 사용할 수 없습니다.

  • Joel 문자열을 $name 변수에 할당하십시오.

    $name = "Joel";
    
  • echo & print 사용하여 $ name의 값을 출력하십시오

    echo $name;   #> Joel
    print $name;  #> Joel
    
  • 괄호는 필수는 아니지만 사용할 수 있습니다.

    echo($name);  #> Joel
    print($name); #> Joel
    
  • 여러 매개 변수 사용 ( echo 만)

    echo $name, "Smith";       #> JoelSmith
    echo($name, " ", "Smith"); #> Joel Smith
    
  • printecho 와는 달리 표현식 ( 1 을 반환)이므로 더 많은 장소에서 사용할 수 있습니다.

    print("hey") && print(" ") && print("you"); #> you11
    
  • 위 내용은 다음과 같습니다.

    print ("hey" && (print (" " && print "you"))); #> you11
    

echo 대한 속기 표기법

PHP 태그 바깥쪽에 있을 때는 기본적으로 <?= 를 사용하여 출력을 시작하고 ?> 를 사용하여 끝내기 위해 echo 대한 속기 표기법을 기본적으로 사용할 수 있습니다. 예 :

<p><?=$variable?></p>    
<p><?= "This is also PHP" ?></p>

종료가 없다는 것에 유의하십시오 ; . 이것은 닫는 PHP 태그가 단일 문장의 종결 자 역할을하기 때문에 작동합니다. 따라서이 단축 표기법에서 세미콜론을 생략하는 것이 일반적입니다.

print 은 언어 구성이지만 운영자와 같은 우선 순위를가집니다. 그 사이에는 = += -= *= **= /= .= %= &= and 연산자가 연결되어 있습니다. 예:

echo '1' . print '2' + 3; //output 511

대괄호가있는 동일한 예 :

echo '1' . print ('2' + 3); //output 511

echoprint 차이점

요컨대, 두 가지 주요한 차이점이 있습니다 :

  • print 는 하나의 매개 변수만을 사용하며 echo 는 여러 매개 변수를 가질 수 있습니다.
  • print 는 값을 반환하므로 표현식으로 사용할 수 있습니다.

배열 및 객체의 구조화 된 뷰 출력

print_r 은 사람이 읽을 수있는 형식의 배열 또는 객체를 출력합니다.

배열이나 객체 인 변수가있을 수 있습니다. echo 와 함께 출력하려고하면 오류가 발생합니다.
Notice: Array to string conversion 합니다. 대신 print_r 함수를 사용하여 사람이 읽을 수있는이 변수 형식을 덤프 할 수 있습니다.

두 번째 매개 변수로 true 를 전달하여 내용을 문자열로 반환 할 수 있습니다.

$myobject = new stdClass();
$myobject->myvalue = 'Hello World';
$myarray = [ "Hello", "World" ];
$mystring = "Hello World";
$myint = 42;

// Using print_r we can view the data the array holds.
print_r($myobject);
print_r($myarray);
print_r($mystring);
print_r($myint);

그러면 다음과 같이 출력됩니다.

stdClass Object
(
    [myvalue] => Hello World
)
Array
(
    [0] => Hello
    [1] => World
)
Hello World
42

또한 print_r 의 출력은 간단하게 에코되는 것이 아니라 문자열로 캡처 될 수 있습니다. 예를 들어, 다음 코드는 $myarray 의 형식화 된 버전을 새 변수로 덤프합니다.

$formatted_array = print_r($myarray, true);

브라우저에서 PHP의 출력을보고 HTML로 해석되면 줄 바꿈이 표시되지 않고 출력을 훨씬 쉽게 읽을 수 있습니다.

echo '<pre>' . print_r($myarray, true) . '</pre>';

페이지의 소스 코드를 열면 <pre> 태그를 사용하지 않고도 같은 방식으로 변수의 <pre> 지정됩니다.

또는 출력 할 내용이 HTML이 아닌 일반 텍스트인지 브라우저에 알릴 수 있습니다.

header('Content-Type: text/plain; charset=utf-8');
print_r($myarray);

var_dump() - 인자의 타입과 값을 포함한 인자의 내용에 대한 사람이 읽을 수있는 디버깅 정보 출력

print_r비교 하여 출력은 객체의 ID, 배열 크기, 문자열 길이, 참조 마커 등과 같은 및 기타 정보와 함께 변수 유형 을 출력하므로 출력이 print_r비교 하여 더 자세합니다.

var_dump 를 사용하여 디버깅을위한보다 자세한 버전을 출력 할 수 있습니다.

var_dump($myobject, $myarray, $mystring, $myint);

산출은 더 상세하다 :

object(stdClass)#12 (1) {
  ["myvalue"]=>
  string(11) "Hello World"
}
array(2) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(5) "World"
}
string(11) "Hello World"
int(42)

참고 : 개발 환경에서 xDebug를 사용하는 경우, var_dump의 출력은 기본적으로 제한되거나 잘립니다. 이 옵션을 변경하는 방법에 대한 자세한 내용은 공식 설명서 를 참조하십시오.


var_export() - 유효한 PHP 코드 출력

var_export()PHP 파싱 ​​가능 항목 표현을 덤프합니다.

두 번째 매개 변수로 true 를 전달하여 내용을 변수로 반환 할 수 있습니다.

var_export($myarray);
var_export($mystring);
var_export($myint);

출력은 유효한 PHP 코드입니다 :

array (
  0 => 'Hello',
  1 => 'World',
)
'Hello World'
42

내용을 변수에 넣으려면 다음과 같이하면됩니다.

$array_export = var_export($myarray, true);
$string_export = var_export($mystring, true);
$int_export = var_export($myint, 1); // any `Truthy` value

그 후, 다음과 같이 출력 할 수 있습니다 :

printf('$myarray = %s; %s', $array_export, PHP_EOL);
printf('$mystring = %s; %s', $string_export, PHP_EOL);
printf('$myint = %s; %s', $int_export, PHP_EOL);

그러면 다음과 같은 결과가 출력됩니다.

$myarray = array (
  0 => 'Hello',
  1 => 'World',
);
$mystring = 'Hello World';
$myint = 42;

printf 대 sprintf

printf 는 자리 표시자를 사용하여 형식화 된 문자열을 출력 합니다.

sprintf 는 형식이 지정된 문자열을 반환 합니다.

$name = 'Jeff';

// The `%s` tells PHP to expect a string
//            ↓  `%s` is replaced by  ↓
printf("Hello %s, How's it going?", $name);
#> Hello Jeff, How's it going?

// Instead of outputting it directly, place it into a variable ($greeting)
$greeting = sprintf("Hello %s, How's it going?", $name);
echo $greeting;
#> Hello Jeff, How's it going?

이 두 함수로 숫자를 포맷 할 수도 있습니다. 이것은 돈을 표현하는 데 사용되는 10 진수 값의 형식을 지정하는 데 사용되어 항상 10 진수 2 자리가되도록합니다.

$money = 25.2;
printf('%01.2f', $money);
#> 25.20

vprintfvsprintf 의 두 함수는 printfsprintf 로 작동하지만 개별 변수 대신 형식 문자열과 값 배열을 사용할 수 있습니다.

echo와의 문자열 연결

문자열 을 출력하는 동안 연결을 사용 하여 "end to end" 문자열을 결합 할 수 있습니다 (예 : echo 또는 print 사용).

를 사용하여 변수를 연결할 수 있습니다 . (마침표 / 점).

// String variable
$name = 'Joel';

// Concatenate multiple strings (3 in this example) into one and echo it once done.
//      1. ↓        2. ↓            3. ↓    - Three Individual string items
echo '<p>Hello ' . $name . ', Nice to see you.</p>';
//               ↑       ↑                  - Concatenation Operators

#> "<p>Hello Joel, Nice to see you.</p>"

연결과 마찬가지로 echo (괄호없이 사용 된 경우)는 쉼표 (,)를 사용하여 문자열 및 변수를 다른 임의의 표현식과 함께 결합하는 데 사용될 수 있습니다.

$itemCount = 1;

echo 'You have ordered ', $itemCount, ' item', $itemCount === 1 ? '' : 's';
//                      ↑           ↑        ↑                - Note the commas

#> "You have ordered 1 item"

문자열 연결과 여러 개의 인자 전달

echo 명령에 여러 인수를 전달하는 것이 상황에 따라 문자열 연결보다 유리합니다. 인수는 전달 된 순서와 동일한 순서로 출력에 기록됩니다.

echo "The total is: ", $x + $y;

연결의 문제점은 그 기간 . 표현에 우선합니다. 연결된 경우, 위의 표현식은 올바른 동작을 위해 여분의 괄호가 필요합니다. 이 기간의 우선 순위도 삼항 연산자에 영향을줍니다.

echo "The total is: " . ($x + $y);

큰 정수 출력하기

32 비트 시스템에서 PHP_INT_MAX 보다 큰 정수는 자동으로 float로 변환됩니다. 이것을 정수 값 (즉, 비 과학 표기법)으로 출력하는 것은 printf 를 사용하여 아래와 같이 float 표현을 사용하여 수행 할 수 있습니다.

foreach ([1, 2, 3, 4, 5, 6, 9, 12] as $p) {
    $i = pow(1024, $p);
    printf("pow(1024, %d) > (%7s) %20s %38.0F", $p, gettype($i), $i, $i);
    echo "  ", $i, "\n";
}
// outputs:
pow(1024,  1)  integer                 1024                                   1024  1024
pow(1024,  2)  integer              1048576                                1048576  1048576
pow(1024,  3)  integer           1073741824                             1073741824  1073741824
pow(1024,  4)   double        1099511627776                          1099511627776  1099511627776
pow(1024,  5)   double  1.1258999068426E+15                       1125899906842624  1.1258999068426E+15
pow(1024,  6)   double  1.1529215046068E+18                    1152921504606846976  1.1529215046068E+18
pow(1024,  9)   double  1.2379400392854E+27           1237940039285380274899124224  1.2379400392854E+27
pow(1024, 12)   double  1.3292279957849E+36  1329227995784915872903807060280344576  1.3292279957849E+36

참고 : 무한하지 않은 float 정밀도에주의하십시오!

이것이 멋진 것처럼 보이지만,이 고안된 예제에서 숫자는 모두 1024의 제곱 (따라서 2)이므로 이진수로 표현 될 수 있습니다. 예를 들면 :

$n = pow(10, 27);
printf("%s %.0F\n", $n, $n);
// 1.0E+27 1000000000000000013287555072

인덱스와 값을 가진 다차원 배열을 출력하고 테이블에 인쇄하십시오.

Array 
( 
    [0] => Array 
        ( 
            [id] => 13 
            [category_id] => 7 
            [name] => Leaving Of Liverpool 
            [description] => Leaving Of Liverpool 
            [price] => 1.00 
            [virtual] => 1 
            [active] => 1 
            [sort_order] => 13 
            [created] => 2007-06-24 14:08:03 
            [modified] => 2007-06-24 14:08:03 
            [image] => NONE 
        ) 

    [1] => Array 
        ( 
            [id] => 16 
            [category_id] => 7 
            [name] => Yellow Submarine 
            [description] => Yellow Submarine 
            [price] => 1.00 
            [virtual] => 1 
            [active] => 1 
            [sort_order] => 16 
            [created] => 2007-06-24 14:10:02 
            [modified] => 2007-06-24 14:10:02 
            [image] => NONE 
        ) 

)  

테이블에 인덱스와 값이있는 다차원 배열 출력

<table>
<?php 
foreach ($products as $key => $value) {
    foreach ($value as $k => $v) {
        echo "<tr>";
        echo "<td>$k</td>"; // Get index.
        echo "<td>$v</td>"; // Get value.
        echo "</tr>";
    }
}
?>
</table>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow