고찰2. 중괄호{ }를 이용한 변수해석 -php
-$변수명{숫자}
-error_reporting()
복합(curly) 문법
이 방법은 문법이 복합적이라서 복합이라고 부르는 것이 아니다. 대신에 이 방법으로 복합 표현식을 포함할 수 있기 때문이다.
사실, 이 문법으로 문자열의 네임스페이스에 존재하는 어떤 변수도 포함할 수 있다. 단순히 문자열을 드러내는 방법과 동일한 표현식을 쓸 수 있다. 그리고 { 과 } 안에 그것을 포함한다. '{'를 회피할 수 없기 때문에 이 문법은 $가 즉시 {뒤에 올 때만 인식된다. ("{$" 리터럴을 쓰려면 "{\$" 이나 "\{$" 을 사용하라). 몇 가지 예를 보고 위 설명을 이해해보자:
<?php
// Get the first character of a string
$str = 'This is a test.';
$first = $str{0}; //$변수명{숫자} : 해당 문자열에서 숫자에 해당하는 한 글자를 저장.
// Get the third character of a string
$third = $str{2};
// Get the last character of a string.
$str = 'This is still a test.';
$last = $str{strlen($str)-1};
// 문자열의 마지막 문자를 변경.
$str = 'Look at the sea';
$str{strlen($str)-1} = 'e';
?>
중괄호{}를 이용한 변수 명 표기:
문자열 안에서 변수의 표기가 모호할 경우 { }이용해서 명확하게 표현할 수 있다.
<?php
$beer = 'Heineken'; //변수명이 $beer일 때.
echo "$beer's taste is great"; //Heineken's taste is great : 됨.
echo "He drank some $beers"; //He drank some --변수인식이 안됨.
echo "He drank some ${beer}s"; //He drank some Heinekens : 됨
echo "He drank some {$beer}s"; //He drank some Heinekens : 됨
?>
비슷하게, array 인덱스나 해석된 object특성을 보유할 수 있다. 배열 인덱스로 닫음 대괄호 (])는 인덱스의 끝을 표시한다. 객체 속성은 변수를 갖는 트릭이 존재하지 않지만, 객체 특성에 대해서 단순한 변수에 적용되는 규칙과 같다.
<?php
// 모든 에러를 보여주는 함수
error_reporting(E_ALL);
$fruits = array('strawberry' => 'red', 'banana' => 'yellow');// 배열 선언.
echo "A banana is $fruits[banana].";// 문제 있음.
echo "A banana is {$fruits[banana]}.";// 문제 있음.
echo "A banana is $fruits['banana'].";//안 됨
echo "A banana is {$fruits['banana']}.";// 됨. 배열 변수는 주로 이렇게 출력할 것.
echo "A banana is " . $fruits['banana'] . ".";// 됨.
echo "This square is $square->width meters broad.";//됨. 근데 뭔 말이야?
echo "This square is $square->width00 centimeters broad.";// 안 됨.
?>
error_reporting() 사용하기:
<?php
// 모든 오류 출력을 끄고
error_reporting(0);
// 단순한 실행 시 오류를 표시하는
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// E_NOTICE를 표시하는 것도 추천(초기화되지 않은 변수, 변수 이름의 철자 실수 등..)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
// E_NOTICE 외의 모든 오류를 표시하는
error_reporting(E_ALL & ~E_NOTICE);
// 모든 PHP 오류를 표시한다 (Changelog 를 참조 바랍니다)
error_reporting(E_ALL);
// 모든 PHP 오류를 표시하는
error_reporting(-1);
// error_reporting(E_ALL); 과 같다
ini_set('error_reporting', E_ALL);
?>
'COMPUTER > php' 카테고리의 다른 글
12. Mysql을 이용한 메모장 (3) 제목, 리스트-php- (0) | 2017.03.19 |
---|---|
11. Mysql을 이용한 메모장 (2) 테이블 생성, 자료 입력-php- (0) | 2017.03.16 |
고찰1. 문자열 및 echo 출력 -php- (0) | 2017.03.16 |
10. Mysql을 이용한 메모장 (1) -php- (0) | 2017.03.14 |
9. php 환경 변수들 -php- (0) | 2017.03.12 |