💻 자주 쓰는 PHP 함수

[PHP 함수] array_key_exists() 함수 사용 가이드

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

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 코드를 작성하세요! 🚀

 

728x90