💻 자주 쓰는 PHP 함수

[PHP 함수] is_array()로 배열 여부 확인하기

rhandy 2025. 3. 22. 11:57
728x90

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 개발을 해보세요! 🚀

💡 도움이 되셨다면 공유해주세요! 😊

 

728x90