💻 자주 쓰는 PHP 함수

[PHP 함수] in_array() 함수로 배열 내에 특정 값의 존재 여부 확인하기

rhandy 2025. 3. 21. 17:57
728x90

PHP에서 배열을 다룰 때, 특정 값이 배열 내에 존재하는지 확인해야 하는 경우가 많습니다.
예를 들어, 사용자가 입력한 데이터가 허용된 값인지 검증하거나, 특정 키워드가 배열 내에 포함되어 있는지 검사하는 작업을 수행할 때 유용합니다.

이러한 기능을 수행하는 대표적인 함수가 바로 in_array() 입니다.

이 글에서는 PHP in_array() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 


1. in_array() 함수란?

기본 문법

bool in_array(mixed $needle, array $haystack, bool $strict = false)

매개변수 설명

매개변수 설명

$needle 검색할 값 (찾고자 하는 값)
$haystack 검색할 배열 (대상 배열)
$strict (선택) true로 설정하면 타입까지 일치하는 경우에만 true 반환 (기본값 false)

반환값

  • $needle이 $haystack 배열에 존재하면 true 반환
  • 존재하지 않으면 false 반환

2. in_array() 기본 예제

🔹 배열 내 값 존재 여부 확인

<?php
$fruits = ["Apple", "Banana", "Cherry"];

if (in_array("Banana", $fruits)) {
    echo "Banana가 배열에 존재합니다.";
} else {
    echo "Banana가 배열에 존재하지 않습니다.";
}
?>

🔹 실행 결과

Banana가 배열에 존재합니다.

➡ "Banana"가 배열에 포함되어 있으므로 true 반환.


🔹 숫자 배열에서 값 찾기

<?php
$numbers = [10, 20, 30, 40];

if (in_array(20, $numbers)) {
    echo "20이 배열에 존재합니다.";
}
?>

➡ 숫자 20이 배열에 존재하기 때문에 true를 반환합니다.


🔹 strict 옵션을 사용하여 타입 일치 확인

<?php
$values = [1, 2, "3", 4];

echo in_array(3, $values) ? "찾음" : "못 찾음"; // "찾음"
echo in_array(3, $values, true) ? "찾음" : "못 찾음"; // "못 찾음"
?>

🔹 실행 결과

찾음
못 찾음

➡ strict = false (기본값)일 경우, "3"과 3을 동일한 값으로 인식
➡ strict = true일 경우, 타입까지 일치해야 하므로 "3"(문자열)과 3(숫자)을 다르게 인식하여 false 반환.


3. in_array()의 실용적인 활용 예제

🔹 1) 허용된 확장자 검사 (파일 업로드)

<?php
$allowedExtensions = ["jpg", "png", "gif"];
$fileExtension = "png";

if (in_array($fileExtension, $allowedExtensions)) {
    echo "업로드가 가능합니다.";
} else {
    echo "허용되지 않은 확장자입니다.";
}
?>

➡ 업로드하려는 파일 확장자가 허용 목록에 포함되는지 확인할 수 있습니다.


🔹 2) 사용자 입력 값 검증

<?php
$allowedRoles = ["admin", "editor", "user"];
$userRole = "moderator";

if (in_array($userRole, $allowedRoles)) {
    echo "권한이 있습니다.";
} else {
    echo "권한이 없습니다.";
}
?>

➡ 사용자의 역할(role)이 허용된 역할 목록에 포함되는지 확인할 수 있습니다.


🔹 3) 배열 내 키워드 포함 여부 확인

<?php
$keywords = ["PHP", "JavaScript", "HTML", "CSS"];
$search = "PHP";

if (in_array($search, $keywords)) {
    echo "$search 키워드가 포함되어 있습니다.";
}
?>

➡ 특정 키워드가 배열 내에 존재하는지 확인할 수 있습니다.


🔹 4) 다차원 배열에서 값 찾기

in_array()는 다차원 배열에서는 직접 사용할 수 없음.

<?php
$users = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"],
];

$names = array_column($users, "name"); // 'name' 값만 추출하여 배열로 변환

if (in_array("Bob", $names)) {
    echo "Bob이 존재합니다.";
}
?>

➡ array_column()을 사용하여 특정 필드만 배열로 추출한 후, in_array()로 검색하는 방식.


4. in_array()와 다른 배열 검색 함수 비교

함수 설명

in_array() 배열에 특정 값이 존재하는지 확인 (true/false 반환)
array_search() 배열에서 특정 값이 존재하는 위치(키/인덱스)를 반환
isset() 특정 키가 존재하는지 확인
array_key_exists() 배열에 특정 키가 존재하는지 확인

in_array() vs array_search() 비교

<?php
$array = ["Apple", "Banana", "Cherry"];

echo in_array("Banana", $array) ? "존재함" : "없음"; // 존재 여부만 확인
echo array_search("Banana", $array); // 1 (위치 반환)
?>

➡ array_search()는 값을 찾으면 해당 인덱스를 반환.
➡ in_array()는 존재 여부만 true/false로 반환.


5. in_array() 사용 시 주의할 점

strict 옵션을 사용하여 타입 비교 확실히 하기

<?php
$values = [1, 2, "3"];

echo in_array(3, $values) ? "찾음" : "못 찾음"; // "찾음"
echo in_array(3, $values, true) ? "찾음" : "못 찾음"; // "못 찾음"
?>

➡ 타입까지 일치시키려면 strict = true를 설정해야 합니다.

다차원 배열에서는 in_array() 단독 사용 불가

<?php
$data = [
    ["id" => 1, "name" => "Alice"],
    ["id" => 2, "name" => "Bob"]
];

echo in_array("Alice", $data) ? "존재함" : "없음"; // 항상 "없음"
?>

➡ array_column($data, "name")로 변환한 후 in_array() 사용해야 함.

대량 데이터에서 성능 이슈 발생 가능

  • in_array()는 배열을 순차적으로 검색하므로, 배열 크기가 클수록 성능 저하 가능.
  • 대량 데이터 검색 시 array_flip()을 사용하면 속도 개선 가능.
<?php
$array = array_flip(["Apple", "Banana", "Cherry"]);

if (isset($array["Banana"])) {
    echo "Banana가 존재합니다.";
}
?>

➡ array_flip()을 사용하면 배열을 키 기반 검색 방식으로 변환하여 속도를 높일 수 있습니다.


6. 결론

PHP의 in_array() 함수는 배열 내 특정 값이 존재하는지 확인하는 필수적인 함수입니다.
이를 활용하면 데이터 검증, 키워드 검색, 사용자 입력 필터링 등을 효율적으로 수행할 수 있습니다.

 

📌 핵심 요약
✔️ in_array()는 배열에 특정 값이 있는지 확인 (true/false 반환)
✔️ strict = true를 사용하면 타입까지 일치해야 true 반환
✔️ 다차원 배열에서는 array_column()을 활용하여 검색
✔️ 대량 데이터에서는 array_flip() + isset()을 활용하여 성능 개선 가능

이제 in_array()를 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀

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

 

728x90