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 개발을 해보세요! 🚀
💡 도움이 되셨다면 공유해주세요! 😊
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] strlen() 함수로 문자열의 길이를 구하기 (34) | 2025.03.22 |
---|---|
[PHP 함수] is_array()로 배열 여부 확인하기 (22) | 2025.03.22 |
[PHP 함수] explode() 함수로 문자열을 배열로 변환하기 (18) | 2025.03.21 |
[PHP 함수] strpos()로 문자열 찾기 (12) | 2025.03.20 |
[PHP 함수] array_merge() 함수로 배열 합치기 (10) | 2025.03.20 |