PHP에서 배열을 다룰 때, 특정 키(인덱스)가 배열 내에 존재하는지 확인해야 하는 경우가 많습니다.
예를 들어, 연관 배열(Associative Array)에서 특정 키가 존재하는지 확인하거나, 옵션이 설정되었는지 검사할 때 유용하게 사용됩니다.
이러한 기능을 수행하는 대표적인 함수가 바로 array_key_exists() 입니다.
이 글에서는 PHP array_key_exists() 함수의 사용법, 다양한 활용 예제, isset()과의 차이점, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다.
1. array_key_exists() 함수란?
✅ 기본 문법
bool array_key_exists(string|int $key, array $array)
✅ 매개변수 설명
매개변수 설명
$key | 존재 여부를 확인할 키 (문자열 또는 정수) |
$array | 검색할 배열 |
✅ 반환값
- $key가 $array에 존재하면 true 반환
- 존재하지 않으면 false 반환
2. array_key_exists() 기본 예제
🔹 배열에서 특정 키가 존재하는지 확인
<?php
$user = ["name" => "Alice", "age" => 25, "city" => "New York"];
if (array_key_exists("age", $user)) {
echo "나이 정보가 있습니다.";
} else {
echo "나이 정보가 없습니다.";
}
?>
🔹 실행 결과
나이 정보가 있습니다.
➡ "age"라는 키가 배열에 존재하기 때문에 true를 반환합니다.
🔹 존재하지 않는 키 확인
<?php
$user = ["name" => "Alice", "age" => 25];
if (array_key_exists("email", $user)) {
echo "이메일이 있습니다.";
} else {
echo "이메일이 없습니다.";
}
?>
🔹 실행 결과
이메일이 없습니다.
➡ "email" 키가 배열에 없으므로 false 반환.
3. array_key_exists() vs isset() 차이점
함수 설명 null 값 처리
array_key_exists() | 키가 존재하는지만 확인 | null 값도 true 반환 |
isset() | 키가 존재하고 값이 null이 아닌 경우 true 반환 | null이면 false 반환 |
✅ 예제: array_key_exists()와 isset() 차이점
<?php
$data = ["name" => "John", "age" => null];
var_dump(array_key_exists("age", $data)); // true
var_dump(isset($data["age"])); // false
?>
🔹 실행 결과
bool(true)
bool(false)
➡ "age" 키는 존재하지만 값이 null이므로
➡ array_key_exists()는 true 반환
➡ isset()는 false 반환
4. array_key_exists()의 실용적인 활용 예제
🔹 1) 연관 배열에서 옵션 확인
<?php
$options = ["theme" => "dark", "language" => "en"];
if (array_key_exists("theme", $options)) {
echo "테마 설정이 있습니다: " . $options["theme"];
} else {
echo "테마 설정이 없습니다.";
}
?>
➡ array_key_exists()를 사용하여 배열에 특정 키가 있는지 확인할 수 있습니다.
🔹 2) 사용자 입력 데이터 검사
<?php
$userInput = ["username" => "Alice", "email" => "alice@example.com"];
if (!array_key_exists("password", $userInput)) {
echo "비밀번호를 입력해야 합니다.";
}
?>
➡ 사용자가 password 필드를 입력했는지 확인하는 예제입니다.
🔹 3) 다차원 배열에서 키 확인
<?php
$users = [
"user1" => ["name" => "Alice", "age" => 25],
"user2" => ["name" => "Bob"]
];
if (array_key_exists("age", $users["user1"])) {
echo "user1의 나이는 " . $users["user1"]["age"];
} else {
echo "user1의 나이 정보가 없습니다.";
}
?>
➡ "user1" 배열에 "age" 키가 존재하는지 확인할 수 있습니다.
🔹 4) 배열이 비어 있는 경우 예외 처리
<?php
$settings = [];
if (array_key_exists("timezone", $settings)) {
echo "시간대 설정: " . $settings["timezone"];
} else {
echo "시간대 설정이 없습니다.";
}
?>
➡ 빈 배열에서 특정 키를 찾을 때도 오류 없이 false를 반환합니다.
5. array_key_exists()와 다른 배열 함수 비교
함수 설명
array_key_exists() | 키가 존재하는지만 확인 (null 값도 포함) |
isset() | 키가 존재하고 값이 null이 아닐 때만 true |
array_keys() | 배열의 모든 키를 배열로 반환 |
array_search() | 특정 값이 존재하는 키를 반환 |
✅ 예제: array_keys()와 비교
<?php
$user = ["name" => "Alice", "age" => 25];
$keys = array_keys($user);
var_dump(in_array("age", $keys)); // true (키가 존재하는지 확인)
?>
➡ array_keys()를 사용하면 배열의 모든 키를 가져와 in_array()로 확인할 수도 있습니다.
6. array_key_exists() 사용 시 주의할 점
✅ 배열이 아닌 데이터에 사용하면 오류 발생
<?php
$data = "Hello, PHP!";
var_dump(array_key_exists("name", $data)); // 오류 발생
?>
➡ 배열이 아닌 변수에 사용하면 TypeError 발생 가능 (PHP 8 이상).
➡ 배열인지 먼저 확인하고 사용해야 함.
<?php
if (is_array($data) && array_key_exists("name", $data)) {
echo "키가 존재합니다.";
}
?>
✅ 객체에서는 property_exists() 사용
<?php
class User {
public $name = "Alice";
}
$user = new User();
var_dump(array_key_exists("name", (array) $user)); // 가능하지만 권장 X
var_dump(property_exists($user, "name")); // 권장 방법
?>
➡ 객체에서는 array_key_exists()보다 property_exists()를 사용하는 것이 올바른 방법.
✅ null 값도 true 반환
<?php
$data = ["key" => null];
var_dump(array_key_exists("key", $data)); // true
var_dump(isset($data["key"])); // false
?>
➡ 키가 존재하지만 값이 null일 경우 array_key_exists()는 true, isset()는 false 반환.
7. array_key_exists() 활용 팁
✅ 키 존재 여부를 확인한 후 기본값 할당
<?php
$options = ["theme" => "dark"];
$theme = array_key_exists("theme", $options) ? $options["theme"] : "light";
echo $theme; // "dark"
?>
✅ 객체 속성 검사 시 property_exists() 사용
<?php
class Config {
public $debug = true;
}
$config = new Config();
if (property_exists($config, "debug")) {
echo "디버그 모드 활성화됨";
}
?>
8. 결론
PHP의 array_key_exists() 함수는 배열에서 특정 키가 존재하는지 확인하는 필수적인 함수입니다.
이를 활용하면 연관 배열 검색, 사용자 입력 검증, JSON 데이터 처리 등을 효율적으로 수행할 수 있습니다.
📌 핵심 요약
✔️ array_key_exists()는 배열에 특정 키가 존재하는지 확인
✔️ 값이 null이어도 키만 존재하면 true 반환
✔️ 객체에서는 property_exists() 사용 권장
✔️ 배열이 아닌 데이터에 사용하면 TypeError 발생 가능 (PHP 8 이상)
이제 array_key_exists()를 활용하여 더욱 안전한 PHP 코드를 작성하세요! 🚀

'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] file_get_contents()로 웹 페이지 가져오기 (21) | 2025.03.24 |
---|---|
[PHP 함수] file_put_contents() 함수 완벽 가이드 (20) | 2025.03.24 |
[PHP 함수] array_keys() 함수 사용하기 (10) | 2025.03.23 |
[PHP 함수] strlen() 함수로 문자열의 길이를 구하기 (34) | 2025.03.22 |
[PHP 함수] is_array()로 배열 여부 확인하기 (22) | 2025.03.22 |