PHP
PHP 기본 구문(2)

[시작하기 전에]
이 글은 "Kimho의 PHP5 웹프로그래밍" 책의 일부입니다.
책의 전체 내용은 구글 플레이 도서에서도 찾아보실 수 있습니다.
오디오 강좌는 이 곳 뿐만 아니라 팟캐스트를 통해서도 들으실 수 있습니다.


[오디오 강좌 듣기]

연산자

연산자는 수학적이거나 논리적인 계산을 하기 위해 사용되는 기호이다. 

예를 들어 $a = 3 + 4 는 3개의 연산자를 사용하고 있다. 

$는 a라는 이름의 변수를 사용함을 알려주는 연산자이고, =는 변수에 값을 대입하는 연산자이며, +는 두 값을 더해주는 연산자이다.


연산자에는 산술 연산자, 대입 연산자, 논리 연산자, 비트 연산자, 형 변환 연산자 등이 있다. 그럼 PHP에서 사용되는 이와 같은 연산자들에 대해서 살펴보도록 하자.


산술 연산자

PHP에서 사용하는 산술 연산자로는 +, -, *, /, %, ++, -- 등이 있다. 

다음 [표 2-4]는 각 연산자의 사용 방법과 그 의미에 대해 설명하고 있다.


[표 2-4] 산술 연산자의 사용 방법과 의미

연산자의미
$a + $b
$a와 $b를 더함.
$a - $b
$a에서 $b를 뺌.
$a * $b
$a와 $b를 곱함
$a / $b
$a를 $b로 나눔
$a % $b
$a를 $b로 나눈 나머지
$a++
$a를 증가시킴
++$a
증가시킨 값을 $a에 대입
$a--
$a를 감소시킴
--$a
감소시킨 값을 $a에 대입

 

++ 혹은 --와 같은 증가/감소 연산자는 일반적으로 숫자형 변수의 값에 1을 증가시키거나 감소시킨다. 

다음 [예제 2-16]은 증가/감소 연산자의 일반적인 사용 예를 보여주고 있다.

[예제 2-16] 증가/감소 연산자

<?php
$a = 5;
print $a++; // 5가 출력되고 $a를 1 증가 시킨다.
print $a; // 6이 출력된다.
$a = 5;
print ++$a; // 1 증가된 값이 $a에 대입되고 6이 출력된다.
print $a; // 6이 출력된다.
$a = 5;
print $a--; // 5가 출력되고 $a를 1 감소 시킨다.
print $a; // 4가 출력된다.
$a = 5;
print --$a; // 1 감소된 값이 $a에 대입되고 4가 출력된다.
print $a; // 4가 출력된다.
?>


증가 연산자는 숫자뿐 아니라 문자에 대해서도 적용된다. 

즉, 문자에 증가 연산자를 사용하면 마지막 문자의 다음 문자를 가져온다. 

예를 들어 ‘A’라는 문자에 증가 연산자를 사용하면 ‘B’를 가져온다. 

그리고 ‘Z’라는 연산자에 증가 연산자가 사용되면 ‘AA’를 가져온다. 

다음 [예제 2-17]은 증가 연산자를 문자에서 사용한 예를 보여주고 있다.

[예제 2-17] 증가 연산자를 문자에서 사용하기
<?php
$i = 'W';
for($n=0; $n<6; $n++)
{
print ++$i . "\n";
}
/* 출력 결과
X
Y
Z
AA
AB
AC
*/
?>


그런데 증가 연산자로 문자를 증가시킬 수 있지만, 감소 연산자로 문자를 감소시킬 수는 없음에 유의하기 바란다.


대입 연산자

변수에 어떤 값을 대입하는 연산자를 대입 연산자라고 한다. 

기본적인 대입 연산자는 등호(=)이다. 

대입 연산자의 왼쪽에는 변수가 오고, 오른쪽에는 변수에 대입할 값이 온다. 

예를 들어, $a=3 이라고 쓰면 $a라는 변수에 3이 대입된다.


대입 연산자는 다음 [예제 2-18]과 같은 편법으로 사용할 수도 있다.

[예제 2-18] 대입 연산자를 사용한 편법
<?php
$a = ($b = 4) + 5; // $b에 4가 대입되고, $a에 9가 대입된다.
?>


PHP에서는 대입 연산자와 다른 연산자를 복합으로 사용할 수도 있다. 

다음 [예제 2-19]는 복합 연산자의 사용 예를 보여주고 있다.

[예제 2-19] 복합 연산자의 사용 예

<?php
$a = 3;
$a += 5; // $a = $a + 5 라고 쓴 것과 같다. $a에는 8이 대입된다.
$b = "Hello ";
$b .= "There!"; // $b = $b . "There!" 라고 쓴 것과 같다.
// $b에는 “Hello There!”가 대입된다.
?>


논리 연산자

2개의 피 연산자를 비교하여 그 결과가 참이면 TRUE를 반환하고 거짓이면 FALSE를 반환하는 연산자를 논리 연산자라고 한다.

사실 피 연산자로서의 변수는 자체적으로 Boolean 값으로 판단될 수도 있다. 

예를 들어 숫자형 변수에서 0은 FALSE로 판단되고 나머지 숫자는 모두 TRUE로 판단된다. 

그리고 문자형 변수에서 공백은 FALSE로 판단되고 나머지는 TRUE로 판단된다는 사실을 알아두기 바란다.

다음 [표 2-5]는 논리 연산자의 예와 그 의미를 설명한 것이다.


[표 2-5] 논리 연산자의 예와 의미

연산자설명
$a < $b
$a가 $b보다 작으면 TRUE, 그렇지 않으면 FALSE
$a > $b
$a가 $b보다 크면 TRUE, 그렇지 않으면 FALSE
$a <= $b
$a가 $b보다 작거나 같으면 TRUE, 그렇지 않으면 FALSE
$a >= $b
$a가 $b보다 크거나 같으면 TRUE, 그렇지 않으면 FALSE
$a == $b
$a와 $b가 같으면(equal) TRUE, 그렇지 않으면 FALSE
$a === $b
$a와 $b가 같으면(identical) TRUE, 그렇지 않으면 FALSE
$a != $b
$a와 $b가 같지 않으면(not equal) TRUE, 그렇지 않으면 FALSE
$a !== $b
$a와 $b가 같지 않으면(not identical) TRUE, 그렇지 않으면 FALSE
$a AND $b
$a가 TRUE이고 $b도 TRUE이면 TRUE, 그렇지 않으면 FALSE
$a && $b
$a가 TRUE이고 $b도 TRUE이면 TRUE, 그렇지 않으면 FALSE
$a OR $b
$a가 TRUE이거나 $b가 TRUE이면 TRUE, 그렇지 않으면 FALSE
$a || $b 
$a가 TRUE이거나 $b가 TRUE이면 TRUE, 그렇지 않으면 FALSE
$a XOR $b
$a, $b 모두 TRUE이거나 모두 FALSE이면 FASE, 그렇지 않으면 TRUE
!$a
$a가 TRUE이면 FALSE, 그렇지 않으면 TRUE

 

대입 연산자인 =와 논리 연산자인 ==는 의미가 다름에 유의하기 바란다. 

=는 연산자의 왼쪽 변수에 오른쪽 변수 값을 대입하는 연산자이다. 

==는 연산자의 왼쪽과 오른쪽에 있는 피 연산자가 같은지 비교하는 연산자이다.


만약 대입 연산자로 이루어진 연산식이 논리적 판단을 위해 사용된다면 연산자 왼쪽의 변수가 TRUE이냐 FALSE이냐에 따라 참, 거짓이 결정될 것이다. 

예를 들어 if($a=0)은 FALSE로 판단되고, if($b=5)는 TRUE로 판단될 것이다.

==와 ===는 모두 두 피 연산자가 같은 지를 비교하는 논리 연산자이다. 

그런데 ==는 피 연산자의 값이 같은 지를 비교하는 반면에 ===는 피 연산자의 값 뿐만 아니라 타입까지도 비교한다. 

예를 들어 0 == 0.00 은 두 피 연산자의 값이 같기 때문에 TRUE이지만 0 === 0.00 은 두 피 연산자의 값은 같지만 왼쪽의 피 연산자는 정수형이고 오른쪽의 피 연산자는 Float 형이기 때문에 FALSE가 된다. 

즉, ===는 피 연산자의 타입까지도 명백하게 비교하고자 할 때 사용하는 논리 연산자이다.


AND와 &&는 두 피 연산자가 모두 TRUE일 때 TRUE를 반환하는 논리 연산자이다. 

그런데 이 두 연산자의 차이점은 연산자 우선 순위에 있다. 

즉, AND 연산자가 && 연산자보다 우선 순위에 있다. 

연산자 우선 순위에 대해서는 [2.6.7 연산자 우선 순위]에서 다루고 있다.


비트 연산자

비트 연산이란 정수를 2진수로 표현하였을 때 0또는 1의 개별 비트 연산을 의미한다. 

비트 연산은 정수에 대해서만 가능하다. 

비트 연산자의 종류로는 &, ^, |, ~, <<, >> 가 있다.

비트 연산자는 메모리의 각 비트를 피 연산자로 하여 계산을 수행한다. 

그리고 논리 연산자와 같은 진리 표를 가지고 있다. 

다음 [표 2-6]은 비트 연산자의 진리 표이다.


[표 2-6] 비트 연산자의 진리 표

$a의 비트$b의 비트
$a & $b
$a ^ $b
$a | $b
00000
10011
01011
11101

 

[표 2-6]을 보는 방법을 보자. 

예를 들어 $a의 비트가 0이고 $b의 비트가 1이면, $a & $b는 0, $a ^ $b는 1, $a | $b는 1이다.


다음 [표 2-7]은 기본 비트 연산자의 종류와 그 의미를 설명한 것이다.


[표 2-7] 기본 비트 연산자의 종류와 의미

연산자의미
&
논리곱(AND). 두 피 연산자 중 하나라도 0이면 0이다.
|
논리합(OR). 두 피 연산자 중 하나라도 1이면 1이다.
^
배타적 논리합(XOR). 두 피연산자가 서로 다르면 1이다.
~
비트 반전(NOT). 1은 0으로, 0은 1로 바꾼다.


<<와 >>는 좌, 우로 비트를 이동할 때 사용하는 쉬프트(shift) 연산자이다. 

좌측으로 이동시키는 경우 가장 오른쪽에 0을 채우면서 왼쪽으로 이동한다. 

좌측 쉬프트의 결과 값은 쉬프트 이전 값에 곱하기 2를 하면 구할 수 있다. 

우측으로 쉬프트하는 경우는 좌측으로 쉬프트하는 경우와 반대이며 쉬프트 결과 값은 쉬프트 이전 값에 나누기 2를 하면 구할 수 있다.


비트 연산자는 C에서는 시스템을 제어하기위해 유용하게 사용되지만 PHP에서는 잘 사용되지 않는 연산자이다.


형 변환 연산자

어떤 변수의 변수 형을 강제로 변환시키는 것을 형 변환(casting)이라고 한다. 

그리고 형 변환에 사용하는 연산자를 형 변환 연산자라고 한다.


PHP에서는 변수 값에 따라 자동으로 변수의 형이 변환된다. 

그러나 어떤 경우에는 강제로 형 변환을 하고자 할 수도 있을 것이다. 

형 변환 연산자를 사용하려면 형 변환을 하려는 변수 앞에 괄호를 써서 변환하고자 하는 변수 형을 써주면 된다. 

다음 [표 2-8]은 형 변환 연산자와 그 사용 예를 보여주고 있다.


[표 2-8] 형 변환 연산자와 사용 예

연산자
(int)
(int)$i
(float)
(float)$f
(bool)
(bool)$b
(string) 
(string)$s
(array)
(array)$a
(object)
(object)$b


형 변환을 위해 형 변환 연산자를 사용해도 되고 혹은 settype() 이라는 함수를 사용해도 된다. 

다음 [예제 2-20]은 settype() 함수의 사용 예를 보여주고 있다.


[예제 2-20] settype() 함수 사용
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo는 5 (integer)
settype($bar, "string"); // $bar는 "1" (string)
?>


기타 연산자

그 외에 PHP에서 자주 사용되는 연산자들은 다음 [표 2-9]와 같다.


[표 2-9] 그 외의 연산자

연산자사용 예 
설명
.
$a . $b
문자열 결합
$
$$a
변수를 간접으로 지정
{}
{$a}
변수를 둘러싸서 영역을 지정
=>
array(1=>”apple”)
배열 인덱스의 값 지정
->
$cls -> method()
객체의 참조
::
MyClass::method()
클래스의 참조
Instanceof
$cls instanceof MyClass
어떤 클래스의 인스턴스인지 확인
@
@mysql_connect()
에러 메시지를 출력하지 않음
? :
($a==1) ? ”one” : ”all”
조건에 따른 분기


먼저 문자열 결합 연산자인 .은 두 문자열을 결합할 때 사용하는 연산자이다. 

문자열 결합 연산자가 =와 복합하여 .=로 사용되면 오른쪽 피 연산자의 문자열을 왼쪽 문자열에 추가하는 복합 연산자가 된다. 


다음 [예제 2-21]은 문자열 복합 연산자의 사용 예를 보여주고 있다.

[예제 2-21] 문자열 복합 연산자의 사용
<?php
$a = "I like";
$b = "apple";
$c = $a . $b;
print $c; // “I like apple”이 출력된다.
$c .= "too";
print $c; // “I like apple too”가 출력된다.
?>


PHP에서는 $를 사용하여 변수 명을 유동적으로 설정할 수도 있다. 

다음 [예제 2-22]는 $를 이용하여 변수 명을 임의로 지정하는 예를 보여주고 있다.

[예제 2-22] 변수 명 지정
<?php
$a = "hello";
$$a = "world"; // $a의 값은 “hello”가 되고 $hello의 값은 “world”가 된다.
print "$a $hello"; // “hello world”가 출력된다.
?>


그런데 $를 이용하여 변수 명을 간접적으로 지정할 때 그것이 문자열 사이에서 사용되면 종종 $를 문자열 $ 자체로 인식하는 경우가 있다. 

그런 경우에는 {}를 이용하여 변수의 범위를 명백히 지정함으로써 문제를 해결할 수 있다. 

다음 [예제 2-23]은 {}를 이용하여 변수의 범위를 지정하는 예이다.

[예제 2-23] 변수의 범위 지정
<?php
$name = "newValue";
$newValue = 25;
print $$name; // 25를 출력한다.
print "$$name"; // “$newValue”라고 출력한다.
// $를 $ 문자열 자체로 인식하였다.
print "{$$name}"; // 25를 출력한다.
// {}를 이용하여 변수의 범위를 명확히 지정하였다.
?>


=> 연산자는 array() 함수를 이용하여 배열을 선언할 때 사용하는 연산자이다. 

=>의 왼쪽에 인덱스가 오고 오른쪽에 해당 요소 값이 온다. 

이 연산자와 배열에 대해서는 [4장 배열]에서 자세하게 다루고 있다.


-> 연산자는 객체의 메소드나 프로퍼티에 접근할 때 사용하는 연산자이다. 

이 연산자에 대해서는 [6장 클래스와 객체]에서 자세하게 다루고 있다.


:: 연산자는 클래스의 메소드를 함수로 사용하고자 할 때 사용하는 연산자이다. 

이 연산자에 대해서는 [6장 클래스와 객체]에서 자세하게 다루고 있다.


instanceof는 클래스의 객체인지 확인하는 연산자이다. 

이 연산자도 역시 [6장 클래스와 객체]에서 자세하게 다루고 있다.


@ 는 에러 메시지를 감추고자 할 때 사용하는 연산자이다. 

PHP가 실행될 때 에러 메시지가 화면에 출력되면 디버깅 시에는 편리하겠지만, 일반 사용자에게 에러 메시지를 보여주는 것은 보기에 좋지 않을 수도 있다. 

이와 같은 이유 등으로 에러 메시지를 출력하지 않을 필요가 있을 때 @ 연산자를 사용할 수 있다. 

다음 [예제 2-24]는 @ 연산자를 이용하여 에러 메시지가 출력되지 않도록 막은 예이다.

[예제 2-24] @ 연산자의 사용
<?php
$a = 5;
$b = 0;
/* 원래는 숫자를 0으로 나누려 하기 때문에 에러 메시지를 출력하겠지만
@ 연산자를 썼으므로 화면에는 아무것도 출력되지 않는다. */
@ $c = $a / $b;
?>


? 연산자는 제어문의 if문과 같은 역할을 하는 연산자이다. 

? 연산자에 대해서는 [3장 제어문]에서 자세하게 다루고 있다.


연산자 우선 순위

여러 개의 연산자에 의하여 연산이 수행될 때 PHP에서는 우선 순위가 상위에 있는 연산자부터 연산을 수행한다. 

예를 들어 7 + 2 * 3 이라는 연산이 있다면, *가 +보다 우선 순위가 상위에 있기 때문에 2 * 3이 먼저 수행된다. 

그런 다음 7 + 6을 수행하여 결과는 13이 된다. 


그러나 우선 순위에 관계 없이 연산을 먼저 수행하도록 하고 싶으면 괄호를 사용하면 된다. 

즉, (7 + 2) * 3 과 같이 괄호를 사용하면 괄호 안의 연산이 먼저 수행되어 결과는 27이 된다.

PHP에서 연산자 우선 순위는 다음 [표 2-10]과 같다. 


[표 2-10] 연산자 우선 순위

우선순위연산자
1

!

~

++

--

@

(int)

(float)

(string)

(bool)

(array)

(object)

2

*

/

%

3

+

-

.

4

<<

>>

5

<

<=

>

>=

6

==

!=

===

!==

7&&
8||
9? :


우선 순위가 상위에 있을수록 먼저 수행되는 연산자이다. 즉, 우선 순위가 1인 연산자가 가장 먼저 수행되는 연산자이며 우선 순위가 13인 연산자는 가장 나중에 수행되는 연산자이다.


변수 관련 함수

여기서는 변수의 상태와 타입을 체크하거나 변환하는 등의 작업을 위해 PHP에서 제공하는 유용한 함수들에 대해 알아보도록 하겠다.

[잠깐]
원본 책에는 더 많은 함수가 수록되어있습니다.
여기서는 많이 쓰이는 함수 위조로 간추렸습니다.


mixed constant ( string name)

name 문자열의 이름을 갖는 상수의 값을 반환한다. 이미 정의된 상수의 이름에 대해 유동적으로 값을 가져올 때 유용하게 쓸 수 있는 함수이다.

[예제 2-25] constant() 함수
<?php
function getServerConfig($value)
{
return constant("SERVER_" . $value);
}
define("SERVER_NAME", "localhost");
define("SERVER_IP", "66.94.230.39");
define("SERVER_OS", "linux");
print getServerConfig("NAME"); // 'localhost'가 출력된다.
?>


bool ctype_alnum ( string text)

text 문자열이 모두 알파벳이나 숫자로 이루어져 있는지 확인한다. 

알파벳이나 숫자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_alpha ( string text)

text 문자열이 모두 알파벳으로 이루어져 있는지 확인한다. 

알파벳으로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_cntrl ( string text)

text 문자열이 모두 제어 문자로 이루어져 있는지 확인한다. 

제어 문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다. 

제어 문자란 예를 들면 엔터(\n)나 탭(\t) 등을 의미한다.


bool ctype_digit ( string text)

text 문자열이 모두 숫자형 문자로 이루어져 있는지 확인한다. 

숫자형 문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_graph ( string text)

text 문자열이 모두 눈에 보이는 문자로 이루어져 있는지 확인한다. 

눈에 보이는 문자로만 이루어져 있으면 TRUE를 반환하고, \n, \t, 혹은 공백 등과 같이 눈으로 볼 수 없는 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_lower ( string text)

text 문자열이 모두 알파벳이면서 소문자로 이루어져 있는지 확인한다. 

알파벳이면서 소문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_print ( string text)

text 문자열이 출력할 수 있는 문자로 이루어져 있는지 확인한다. 

여기에는 공백도 포함된다. 

출력할 수 있는 문자로만 이루어져 있으면 TRUE를 반환하고, \n, \t 등과 같은 제어 문자가 하나라도 있거나 출력할 수 있는 문자가 하나도 없으면 FALSE를 반환한다.


bool ctype_punct ( string text)

text 문자열이 모두 기호 문자로 이루어져 있는지 확인한다. 

기호 문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_space ( string text)

text 문자열이 모두 눈에 보이지 않는 문자로 이루어져 있는지 확인한다. 

눈에 보이지 않는 문자는 엔터, 탭, 혹은 공백 문자 등이다. 

눈으로 볼 수 있는 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_upper ( string text)

text 문자열이 모두 알파벳이면서 대문자로 이루어져 있는지 확인한다. 

알파벳이면서 대문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.


bool ctype_xdigit ( string text)

text 문자열이 모두 16진수 문자로 이루어져 있는지 확인한다. 

즉, 알파벳 대소문자 a에서 f까지 문자와 숫자형 문자로만 이루어져 있으면 TRUE를 반환하고, 그 외의 문자가 하나라도 있으면 FALSE를 반환한다.

[예제 2-26] ctype_ 함수들
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
print "The string $testcase consists of all letters or digits.\n<br/>";
} else {
print "The string $testcase does not consist of all letters or digits.\n<br/>";
}
}
/* 출력 결과
The string AbCd1zyZ9 consists of all letters or digits.
The string foo!#$bar does not consists of all letters or digits.
*/
?>
<?php
$strings = array('KjgWZC', 'arf12');
foreach ($strings as $testcase) {
if (ctype_alpha($testcase)) {
print "The string $testcase consists of all letters.\n<br/>";
} else {
print "The string $testcase does not consist of all letters.\n<br/>";
}
}
/* 출력 결과
The string KjgWZC consists of all letters.
The string arf12 does not consists of all letters.
*/
?>
<?php
$strings = array('string1' => "\n\r\t", 'string2' => 'arf12');
foreach ($strings as $name => $testcase) {
if (ctype_cntrl($testcase)) {
print "The string '$name' consists of all control characters.\n<br/>";
} else {
print "The string '$name' does not consist of all control characters.\n<br/>";
}
}
/* 출력 결과
The string 'string1' consists of all control characters.
The string 'string2' does not consists of all control characters.
*/
?>
<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
if (ctype_digit($testcase)) {
print "The string $testcase consists of all digits.\n<br/>";
} else {
print "The string $testcase does not consist of all digits.\n<br/>";
}
}
/* 출력 결과
The string 1820.20 does not consists of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consists of all digits.
*/
?>
<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
if (ctype_graph($testcase)) {
print "The string '$name' consists of all (visibly) printable characters.\n<br/>";
} else {
print "The string '$name' does not consist of all (visibly) printable characters.\n<br/>";
}
}
/* 출력 결과
The string 'string1' does not consist of all (visibly) printable characters.
The string 'string2' consists of all (visibly) printable characters.
The string 'string3' consists of all (visibly) printable characters.
*/
?>
<?php
$strings = array('aac123', 'qiutoas', 'QASsdks');
foreach ($strings as $testcase) {
if (ctype_lower($testcase)) {
print "The string $testcase consists of all lowercase letters.\n<br/>";
} else {
print "The string $testcase does not consist of all lowercase letters.\n<br/>";
}
}
/* 출력 결과
The string aac123 does not consist of all lowercase letters.
The string qiutoas consists of all lowercase letters.
The string QASsdks does not consist of all lowercase letters.
*/
?>
<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
if (ctype_print($testcase)) {
print "The string '$name' consists of all printable characters.\n<br/>";
} else {
print "The string '$name' does not consist of all printable characters.\n<br/>";
}
}
/* 출력 결과
The string 'string1' does not consist of all printable characters.
The string 'string2' consists of all printable characters.
The string 'string3' consists of all printable characters.
*/
?>
<?php
$strings = array('ABasdk!@!$#', '!@ # $', '*&$()');
foreach ($strings as $testcase) {
if (ctype_punct($testcase)) {
print "The string $testcase consists of all punctuation.\n<br/>";
} else {
print "The string $testcase does not consist of all punctuation.\n<br/>";
}
}
/* 출력 결과
The string ABasdk!@!$# does not consist of all punctuation.
The string !@ # $ does not consist of all punctuation.
The string *&$() consists of all punctuation.
*/
?>
<?php
$strings = array('string1' => "\n\r\t", 'string2' => "\narf12", 'string3' => '\n\r\t');
foreach ($strings as $name => $testcase) {
if (ctype_space($testcase)) {
print "The string '$name' consists of all whitespace characters.\n<br/>";
} else {
print "The string '$name' does not consist of all whitespace characters.\n<br/>";
}
}
/* 출력 결과
The string 'string1' consists of all whitespace characters.
The string 'string2' does not consist of all whitespace characters.
The string 'string3' does not consist of all whitespace characters.
*/
?>
<?php
$strings = array('AKLWC139', 'LMNSDO', 'akwSKWsm');
foreach ($strings as $testcase) {
if (ctype_upper($testcase)) {
print "The string $testcase consists of all uppercase letters.\n<br/>";
} else {
print "The string $testcase does not consist of all uppercase letters.\n<br/>";
}
}
/* 출력 결과
The string AKLWC139 does not consist of all uppercase letters.
The string LMNSDO consists of all uppercase letters.
The string akwSKWsm does not consist of all uppercase letters.
*/
?>
<?php
$strings = array('AB10BC99', 'AR1012', 'ab12bc99');
foreach ($strings as $testcase) {
if (ctype_xdigit($testcase)) {
print "The string $testcase consists of all hexadecimal digits.\n<br/>";
} else {
print "The string $testcase does not consist of all hexadecimal digits.\n<br/>";
}
}
/* 출력 결과
The string AB10BC99 consists of all hexadecimal digits.
The string AR1012 does not consist of all hexadecimal digits.
The string ab12bc99 consists of all hexadecimal digits.
*/
?>


bool define ( string name, mixed value [, bool case_insensitive])

define() 함수에 대해서는 이미 [2.5.3 상수]에서 설명한 바 있다. 

name 이름에 value 값을 갖는 상수를 선언한다. 

case_insensitive가 TRUE이면 상수 이름이 대소문자를 구분하지 않는다. 

기본 값은 FALSE이다. 

예를 들어 case_insensitive가 FALSE인 경우 상수 이름 DATABASE와 Database는 다른 값을 갖는다.

[예제 2-27] define() 함수
<?php
define("CONSTANT", "Hello world.");
print CONSTANT; // "Hello world."를 출력한다.
print Constant; // "Constant"를 출력한다.
define("GREETING", "Hello you.", true);
print GREETING; // "Hello you."를 출력한다.
print Greeting; // "Hello you."를 출력한다.
?>


bool defined ( string name)

name 이름을 갖는 상수가 선언되었으면 TRUE를, 그렇지 않으면 FALSE를 반환한다.

[예제 2-28] defined() 함수
<?php
define("DATABASE", "SQLite");
if(defined("DATABASE"))
{
print "데이터베이스는 " . DATABASE . "이다.";
}
/* 출력 결과
데이터베이스는 SQLite이다.
*/
?>


float doubleval ( mixed var)

var의 실수 값을 반환한다. var에 배열이나 객체를 쓰면 에러가 발생된다.


bool empty ( mixed var)

var가 비어있는지 검사한다. 

"", 0, "0", NULL, FALSE, array(), 아무 값도 지정되지 않은 $var, 그리고 비어있는 프로퍼티의 객체를 비어있는 것으로 판단한다. 

var가 비어있다면 TRUE를, 그렇지 않으면 FALSE를 반환한다. 

반대되는 함수로 isset() 함수가 있다.


bool is_array ( mixed var)

var가 배열인지 확인한다. 배열이면 TRUE를, 그렇지 않으면 FALSE를 반환한다.


bool is_bool ( mixed var)

var가 Boolean인지 확인한다. Boolean이면 TRUE를, 그렇지 않으면 FALSE를 반환한다.


bool is_double ( mixed var)

var가 실수인지 확인한다. 실수이면 TRUE를, 그렇지 않으면 FALSE를 반환한다.


bool is_int ( mixed var)

var가 정수인지 확인한다. 정수이면 TRUE를, 그렇지 않으면 FALSE를 반환한다.


bool is_nan ( float var)

var가 숫자가 아닌 경우 TRUE를 반환한다. asin(2)의 결과 등이 해당한다.


bool is_null ( mixed var)

var가 NULL이면 TRUE를, 그렇지 않으면 FALSE를 반환한다.


bool is_numeric ( mixed var)

var가 수나 문자열이면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환한다.


bool is_object ( mixed var)

var가 객체이면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환한다.


bool is_string ( mixed var)

var가 문자열이면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환한다.


bool isset ( mixed var [, mixed var [, ...]])

var 변수에 NULL이 아닌 어떤 값이 주어져 있으면 TRUE를 반환하고, 아무 값도 주어지지 않거나 NULL이 주어져 있으면 FALSE를 반환한다.


void unset ( mixed var [, mixed var [, mixed ...]])

var 변수를 제거한다. isset() 함수를 사용하여 변수의 제거 여부를 확인할 수 있다.

댓글 0