PHP
변수의 값 출력하기
수색…
소개
동적 인 대화 형 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
. 이 경우 객체를 추가로 검사해야합니다. 구조화 뷰 배열 및 객체 출력 : 참조하십시오.
에코 및 인쇄
echo
와 print
는 함수가 아닌 언어 구조입니다. 이것은 함수가하는 것처럼 인자 주위에 괄호를 사용할 필요가 없다는 것을 의미합니다 (거의 모든 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
print
는echo
와는 달리 표현식 (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
우선 순위
print
은 언어 구성이지만 운영자와 같은 우선 순위를가집니다. 그 사이에는 =
+=
-=
*=
**=
/=
.=
%=
&=
and
연산자가 연결되어 있습니다. 예:
echo '1' . print '2' + 3; //output 511
대괄호가있는 동일한 예 :
echo '1' . print ('2' + 3); //output 511
echo
와 print
차이점
요컨대, 두 가지 주요한 차이점이 있습니다 :
-
print
는 하나의 매개 변수만을 사용하며echo
는 여러 매개 변수를 가질 수 있습니다. -
print
는 값을 반환하므로 표현식으로 사용할 수 있습니다.
배열 및 객체의 구조화 된 뷰 출력
print_r()
- 디버깅을위한 배열 및 객체 출력
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
vprintf
와 vsprintf
의 두 함수는 printf
와 sprintf
로 작동하지만 개별 변수 대신 형식 문자열과 값 배열을 사용할 수 있습니다.
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>