PHP에서 데이터를 다룰 때, 특정 변수가 배열인지 아닌지 확인해야 하는 경우가 많습니다.
예를 들어, 함수의 매개변수가 배열인지 체크하거나, JSON에서 가져온 데이터가 배열인지 확인하는 작업을 수행할 때 유용하게 사용됩니다.
이러한 기능을 수행하는 대표적인 함수가 바로 is_array() 입니다.
이 글에서는 PHP is_array() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다.
1. is_array() 함수란?
✅ 기본 문법
bool is_array(mixed $var)
✅ 매개변수 설명
매개변수 설명
$var | 배열인지 확인할 변수 |
✅ 반환값
- $var가 배열이면 true 반환
- 배열이 아니면 false 반환
2. is_array() 기본 예제
🔹 배열인지 확인하는 기본 사용법
<?php
$data = ["Apple", "Banana", "Cherry"];
if (is_array($data)) {
echo "✅ 변수는 배열입니다.";
} else {
echo "❌ 변수는 배열이 아닙니다.";
}
?>
🔹 실행 결과
✅ 변수는 배열입니다.
➡ $data가 배열이므로 is_array()는 true를 반환합니다.
🔹 문자열이나 숫자는 배열이 아님
<?php
$text = "Hello, PHP!";
$number = 123;
echo is_array($text) ? "배열" : "배열 아님"; // 배열 아님
echo is_array($number) ? "배열" : "배열 아님"; // 배열 아님
?>
➡ is_array()는 배열이 아닌 데이터 타입에 대해 false를 반환합니다.
3. is_array()의 실용적인 활용 예제
🔹 1) 함수 매개변수가 배열인지 확인
<?php
function processData($input) {
if (!is_array($input)) {
echo "❌ 잘못된 입력: 배열을 입력해야 합니다.";
return;
}
print_r($input);
}
processData(["PHP", "JavaScript", "Python"]); // 정상 동작
processData("Hello"); // 오류 메시지 출력
?>
➡ 함수의 매개변수가 배열인지 체크하여 잘못된 입력 방지.
🔹 2) JSON 데이터를 배열인지 확인 후 처리
<?php
$json = '{"name": "John", "age": 30}';
$data = json_decode($json, true); // 연관 배열로 변환
if (is_array($data)) {
echo "✅ JSON이 배열로 변환되었습니다.";
} else {
echo "❌ JSON 변환 실패.";
}
?>
➡ json_decode()가 배열로 변환되었는지 확인하여 JSON 데이터의 유효성을 검사.
🔹 3) 배열이 아닐 경우 배열로 변환
<?php
$data = "Hello, PHP!";
// 배열이 아닐 경우 배열로 변환
if (!is_array($data)) {
$data = [$data];
}
print_r($data);
?>
➡ 배열이 아니면 자동으로 배열로 변환하여 데이터 처리를 쉽게 할 수 있음.
🔹 4) 데이터베이스 조회 결과가 배열인지 확인
<?php
$result = fetchDataFromDatabase(); // 가정된 함수
if (!is_array($result)) {
echo "❌ 데이터가 없습니다.";
} else {
echo "✅ 데이터 조회 성공!";
}
?>
➡ 데이터베이스 조회 결과가 배열인지 체크하여 오류 방지.
🔹 5) foreach() 실행 전에 배열 확인
<?php
$data = "Not an array";
if (is_array($data)) {
foreach ($data as $item) {
echo $item;
}
} else {
echo "❌ 반복할 수 없습니다. (배열이 아님)";
}
?>
➡ foreach() 실행 전에 is_array()를 사용하면 배열이 아닐 경우 오류 방지 가능.
4. is_array()와 다른 타입 확인 함수 비교
함수 설명
is_array() | 변수가 배열인지 확인 |
is_object() | 변수가 객체인지 확인 |
is_string() | 변수가 문자열인지 확인 |
is_numeric() | 변수가 숫자인지 확인 |
is_bool() | 변수가 true 또는 false인지 확인 |
✅ 예제: 다양한 타입 확인
<?php
$var1 = ["Apple", "Banana"];
$var2 = (object) ["name" => "John"];
$var3 = "Hello";
echo is_array($var1) ? "배열" : "배열 아님"; // 배열
echo is_object($var2) ? "객체" : "객체 아님"; // 객체
echo is_string($var3) ? "문자열" : "문자열 아님"; // 문자열
?>
➡ 여러 타입을 검사할 때 각각의 is_ 함수를 적절히 사용하면 좋습니다.
5. is_array() 사용 시 주의할 점
✅ 객체는 배열이 아님
<?php
$object = (object) ["name" => "John"];
echo is_array($object) ? "배열" : "배열 아님"; // 배열 아님
?>
➡ 객체를 is_array()로 검사하면 false가 반환됨.
➡ 객체인지 확인하려면 is_object()를 사용해야 함.
✅ null은 배열이 아님
<?php
$var = null;
echo is_array($var) ? "배열" : "배열 아님"; // 배열 아님
?>
➡ null 값은 배열이 아님.
✅ JSON을 json_decode() 했을 때 null이 나올 수도 있음
<?php
$json = "Invalid JSON";
$data = json_decode($json, true);
if (!is_array($data)) {
echo "❌ JSON 변환 실패!";
}
?>
➡ json_decode()가 실패하면 null을 반환하므로, is_array()로 확인 후 처리해야 함.
✅ 숫자로 인덱싱된 객체는 배열이 아님
<?php
$object = (object) [1 => "PHP", 2 => "JavaScript"];
echo is_array($object) ? "배열" : "배열 아님"; // 배열 아님
?>
➡ 객체는 배열처럼 보일 수 있지만, 엄연히 다른 데이터 타입이므로 주의해야 함.
6. is_array() 활용 팁
✅ 배열이 아닐 경우 강제 변환
<?php
$data = "PHP";
$data = is_array($data) ? $data : [$data];
print_r($data);
?>
✅ 배열이 비어 있는지 확인
<?php
$array = [];
if (is_array($array) && !empty($array)) {
echo "✅ 배열이 존재하고 비어있지 않습니다.";
} else {
echo "❌ 배열이 비어있거나 존재하지 않습니다.";
}
?>
✅ 객체를 배열로 변환 후 확인
<?php
$object = (object) ["name" => "John"];
$array = (array) $object; // 객체를 배열로 변환
if (is_array($array)) {
echo "객체가 배열로 변환되었습니다.";
}
?>
7. 결론
PHP의 is_array() 함수는 변수가 배열인지 확인하는 필수적인 함수입니다.
이를 활용하면 데이터 유효성 검사, JSON 변환 체크, 함수 매개변수 검증 등 다양한 작업을 효율적으로 수행할 수 있습니다.
📌 핵심 요약
✔️ is_array()는 변수가 배열이면 true, 아니면 false 반환
✔️ JSON 데이터를 json_decode() 후 배열인지 확인 가능
✔️ foreach() 실행 전에 is_array()를 사용하여 오류 방지 가능
✔️ 객체는 배열이 아님 (is_object()로 확인해야 함)
이제 is_array()를 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀
💡 도움이 되셨다면 공유해주세요! 😊
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] array_keys() 함수 사용하기 (10) | 2025.03.23 |
---|---|
[PHP 함수] strlen() 함수로 문자열의 길이를 구하기 (34) | 2025.03.22 |
[PHP 함수] in_array() 함수로 배열 내에 특정 값의 존재 여부 확인하기 (16) | 2025.03.21 |
[PHP 함수] explode() 함수로 문자열을 배열로 변환하기 (18) | 2025.03.21 |
[PHP 함수] strpos()로 문자열 찾기 (12) | 2025.03.20 |