정의 및 사용 방법
- PHP 버전
- 4.0.5+
is_scalar() 함수는
주어진 값이 스칼라(scalar) 타입인지 확인합니다.
매개변수로 전달된 값이 스칼라 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
스칼라(scalar) 타입은
값이 여러 개의 데이터를 담는 구조가 아닌, 단 하나의 데이터 값만 가지고 있는 데이터 타입을 말합니다.
PHP에서는 다음 네 가지 기본 타입을 하나의 범주로 묶어 '스칼라 타입'이라고 합니다.
- 부울(boolean):
true또는false - 정수(integer): 음의 정수,
0, 양의 정수 - 부동소수점 숫자(float): 소수점을 포함하는 숫자 값
- 문자열(string): 문자열을 나타내는 데이터 타입
PHP에서 다음과 같은 복합 타입이나 특수 타입은 '스칼라 타입'이 아닙니다.
- 배열(array): 배열을 나타내는 데이터 타입
- 객체(object): 객체를 나타내는 데이터 타입(PHP에서 객체는 클래스로부터 생성되며, 클래스는 객체의 속성과 메서드를 정의)
- 리소스(resource): 외부 리소스와 상호작용할 때 사용되는 데이터 타입(예를 들어, 파일, 데이터베이스 연결, 이미지, 네트워크 연결 등)
- NULL : 변수가 정의되지 않거나 변수에 값이 할당되지 않았음을 나타내는 데이터 타입
이처럼 '스칼라 타입'은 명시적으로 여러 개의 데이터가 아닌 단 하나의 데이터 값만을 가지고 있는 타입을 말합니다. 단, NULL은 단 하나의 데이터 값만을 나타내는 것처럼 보이지만, 기술적으로 NULL은 "값(Value)"이라기보다는 "값이 없음(Absence of value)"을 나타내는 특수한 상태로, PHP에서는 '스칼라 타입'으로 간주하지 않습니다.
기본 예제
/* 스칼라 타입이면 true */
var_dump(is_scalar(true)); // bool(true) => 부울(boolean)
var_dump(is_scalar(false)); // bool(true) => 부울(boolean)
var_dump(is_scalar(-1)); // bool(true) => 정수(integer)
var_dump(is_scalar(0)); // bool(true) => 정수(integer)
var_dump(is_scalar(1)); // bool(true) => 정수(integer)
var_dump(is_scalar(3.14)); // bool(true) => 부동 소수점 숫자(float)
var_dump(is_scalar(-10.5)); // bool(true) => 부동 소수점 숫자(float)
var_dump(is_scalar(0.0)); // bool(true) => 부동 소수점 숫자(float)
var_dump(is_scalar('abc')); // bool(true) => 문자열(string)
var_dump(is_scalar("abc")); // bool(true) => 문자열(string)
var_dump(is_scalar('1')); // bool(true) => 문자열(string)
/* 스칼라 타입이 아니면 false */
var_dump(is_scalar(array(1, 2, 3))); // bool(false) => 배열(array)
var_dump(is_scalar([1, 2, 3])); // bool(false) => 배열(array)
var_dump(is_scalar([])); // bool(false) => 배열(array)
class MyClass {
public $name = 'John Doe';
public $age = 30;
}
$obj1 = new MyClass();
$obj2 = clone $obj1;
var_dump(is_scalar($obj1)); // bool(false) => 객체(object)
var_dump(is_scalar($obj2)); // bool(false) => 객체(object)
$file = fopen('test.txt', 'w');
var_dump(is_scalar($file)); // bool(false) => 리소스(resource)
var_dump(is_scalar(null)); // bool(false) => NULL(대소문자를 구분하지 않음)
var_dump(is_scalar(Null)); // bool(false) => NULL(대소문자를 구분하지 않음)
var_dump(is_scalar(NULL)); // bool(false) => NULL(대소문자를 구분하지 않음)
참고하세요!
gettype() 함수는 주어진 값의 데이터 타입을 문자열로 반환합니다.
구문
is_scalar(mixed $value): bool
매개변수
$value |
필수. 스칼라 타입을 확인할 값입니다. |
|---|
반환 값
매개변수로 전달된 값이 스칼라 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
활용 예제
변수에 담긴 값을 echo로 출력하거나 문자열 연결에 직접 사용하기 전에, 해당 값이 배열이나 객체처럼 구조를 가진 데이터가 아닌 '단일 값으로 바로 처리할 수 있는 데이터'인지 확인하는 필터링 용도로 사용됩니다.
배열이나 객체와 같은 복합 데이터는 내부 구조를 해석해야 하므로, 이를 그대로 출력하면 경고(Warning)가 발생할 수 있습니다. 또한 NULL은 출력 시 아무런 표시가 되지 않아 프로그램의 흐름을 파악하기 어렵게 만들 수 있습니다.
이럴 때 is_scalar() 함수를 사용하면, 여러 개의 데이터를 담는 구조를 가지지 않는 네 가지 값(불리언, 정수, 부동소수점 숫자, 문자열)만을 선별하여 보다 명확하게 처리할 수 있습니다.
다음 예제는 다양한 값을 출력하기 전에 is_scalar()로 확인하는 방법을 보여줍니다.
// 데이터가 단일 값(숫자, 문자열 등)일 때만 화면에 출력합니다.
if (is_scalar($value)) {
echo "결과: " . $value;
}
// NULL은 출력 시 아무것도 보이지 않기 때문에 'NULL'이라고 직접 출력합니다.
elseif (is_null($value)) {
echo "결과: NULL";
}
// 배열이나 객체인 경우, 에러 없이 내부 값을 확인하기 위해 print_r()을 사용합니다.
else {
print_r($value);
}
코드 부연설명
is_null() 함수는
주어진 값이 NULL 타입인지 확인합니다.
매개변수로 전달된 값이 NULL 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
코드 부연설명
print_r()은 주어진 변수나 값의 정보를 사람이 읽기 쉬운 형태로 출력(Prints human-readable)하는 디버깅용 함수입니다.
배열과 객체처럼 복잡한 구조나 리소스 타입을 좀 더 직관적으로 확인할 때 유용합니다.
참고문헌
같이 보기
- PHP var_dump() 함수 – 변수의 타입·길이·값까지 출력
- PHP isset() 함수와 empty() 함수 - 개념 정리 및 사용법과 차이점
- PHP gettype() 함수 - 변수의 데이터 타입 확인
- PHP is_bool() 함수 - 변수의 부울(boolean) 타입 확인
- PHP is_int() 함수 - 변수의 정수(integer) 타입 확인
- PHP is_float() 함수 - 변수의 부동소수점 숫자(float) 타입 확인
- PHP is_numeric() 함수 - 변수의 값이 숫자 또는 숫자 문자열인지 확인
- PHP is_string() 함수 - 변수의 문자열(string) 타입 확인
- PHP is_array() 함수 - 변수의 배열(array) 타입 확인
- PHP is_object() 함수 - 변수의 객체(object) 타입 확인
- PHP is_resource() 함수 - 변수의 리소스(resource) 타입 확인
- PHP ctype_digit() 함수 - 문자열이 모두 숫자인지 확인