정의 및 사용 방법
- PHP 버전
- 4+
array_key_exists() 함수는
배열에서 특정 키(인덱스)가 있는지 확인합니다.
확인하려는 키가 배열 안에 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
array_key_exists() 함수는 배열의 특정한 하나의 키만을 확인할 수 있지만, 
반복문를 활용하면 배열의 여러 개의 키(multiple keys)을 확인할 수 있습니다.
array_key_exists() 함수의 형식은 다음과 같습니다.
구문
array_key_exists(mixed $key, array $array): bool매개변수
| $key | 필수. 배열에서 찾고자(확인하려고) 하는 키을 나타냅니다. | 
|---|---|
| $array | 필수. 검색을 수행할 배열을 나타냅니다. | 
반환 값
확인하려는 키가 배열 안에 존재하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
중요
array_key_exists() 함수는 배열의 최상위(1차원) 키만 검색합니다. 다차원 배열의 중첩된 키는 확인하지 않습니다.
변경 이력
| 버전 | 설명 | 
|---|---|
| 8.0.0 | $key매개변수는 이제bool,float,int,null,resource,string타입의 값을 받을 수 있습니다. | 
| 8.0.0 | $array매개변수에 객체를 전달하는 것이 더 이상 지원되지 않습니다. | 
| 7.4.0 | $array매개변수에 객체를 전달하는 것은 더 이상 권장되지 않으며(deprecated), 객체 속성을 확인해야 하는 경우property_exists()함수를 사용하는 것이 좋습니다. | 
예시 사용법
$studentScores = [
    'Alice' => 85,
    'Bob' => 90,
    'Charlie' => 78,
    'David' => 95
];
if (array_key_exists('Bob', $studentScores)) {
    echo 'Bob의 점수가 배열에 존재합니다.';
} else {
    echo 'Bob의 점수가 배열에 존재하지 않습니다.';
}
// 출력: 'Bob의 점수가 배열에 존재합니다.'위 예제에서 array_key_exists('Bob', $studentScores)는 $studentScores 배열 내에서 'Bob'이라는 키가 존재하기 때문에 true를 반환합니다. 따라서 "Bob의 점수가 배열에 존재합니다."가 출력됩니다.
반복문을 활용해서 배열의 여러 개의 키를 확인하기
array_key_exists() 함수는 배열에서 단일 키를 찾는 데에 사용되기 때문에,
여러 개의 키를 동시에 찾기 위해서 foreach() 반복문과 array_key_exists() 함수를 함께 사용하면 유용합니다.
// 검사하고자 하는 배열
$myArray = [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3',
    // 여러 개의 다른 키들...
];
// 확인하고자 하는 여러 개의 키들
$keysToCheck = ['key1', 'key2', 'key5', 'key7'];
// 루프를 통해 각 키를 확인
foreach ($keysToCheck as $key) {
    if (array_key_exists($key, $myArray)) {
        echo "Key '$key' exists in the array." . '<br>';
    } else {
        echo "Key '$key' does not exist in the array." . '<br>';
    }
}
Key 'key2' exists in the array.
Key 'key5' does not exist in the array.
Key 'key7' does not exist in the array.
위의 예제에서는 array_key_exists() 함수를 이용하여 $myArray 배열에서 $keysToCheck 배열에 담긴 각각의 키를 확인하고 해당 키가 존재하는지 여부를 출력합니다. 루프를 통해 여러 개의 키를 한 번에 확인할 수 있습니다.
참고로, PHP 5.6 이상부터는 array_key_exists() 대신 isset() 함수를 사용하여도 동일한 결과를 얻을 수 있습니다. 예를 들면 다음과 같습니다.
// 검사하고자 하는 배열
$myArray = [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3',
    // 여러 개의 다른 키들...
];
// 확인하고자 하는 여러 개의 키들
$keysToCheck = ['key1', 'key2', 'key5', 'key7'];
foreach ($keysToCheck as $key) {
    if (isset($myArray[$key])) { // array_key_exists() 대신 isset() 함수를 사용
        echo "Key '$key' exists in the array." . '<br>';
    } else {
        echo "Key '$key' does not exist in the array." . '<br>';
    }
}
array_key_exists() 대신 isset() 함수를 사용하여도 동일한 결과를 얻을 수 있습니다.
									Key 'key2' exists in the array.
Key 'key5' does not exist in the array.
Key 'key7' does not exist in the array.
array_key_exists()와 isset() 두 함수는 배열에서 특정 키가 존재하는지 확인하는 데 사용됩니다. 하지만, isset() 함수는 변수의 존재 여부도 함께 확인하기 때문에 약간의 성능 차이가 있을 수 있습니다. 여러 키를 확인할 때에는 성능 차이가 크게 나지 않으므로 편한 방법을 선택하여 사용하시면 됩니다.
유용한 사례
PHP의 array_key_exists() 함수는 배열에서 특정 키가 존재하는지 여부를 확인하는 데 유용하게 활용될 수 있습니다. 다음은 몇 가지 유용한 사례들입니다.
다차원 배열에서 키 확인
다차원 배열에서 중첩된 키가 존재하는지 확인할 수 있습니다. 이는 설정 파일이나 데이터 구조에서 특정 설정 값이 존재하는지 확인하는 데 유용합니다.
$config = [
    'database' => [
        'host' => 'localhost',
        'username' => 'myuser',
        'password' => 'mypassword',
        // ...
    ],
    // ...
];
if (array_key_exists('database', $config) && array_key_exists('username', $config['database'])) {
    echo '데이터베이스 정보가 설정되어 있음'; // 출력: '데이터베이스 정보가 설정되어 있음'
} else {
    echo '데이터베이스 정보가 누락되었거나 비정상적인 설정';
}
다국어 어플리케이션
다국어 어플리케이션에서 언어에 따라 다른 메시지를 출력해야 할 때, 해당 언어의 키가 존재하는지 확인하여 처리할 수 있습니다.
$lang = [
    'en' => [
        'greeting' => 'Hello',
        // ...
    ],
    'ko' => [
        'greeting' => '안녕하세요',
        // ...
    ],
    // ...
];
$selectedLanguage = 'ko'; // 사용자가 선택한 언어
if (array_key_exists($selectedLanguage, $lang)) {
    echo $lang[$selectedLanguage]['greeting']; // 출력: '안녕하세요'
} else {
    echo "언어가 지원되지 않습니다.";
}
위 예제에서 $selectedLanguage가 'ko'로 설정되어 있으므로, 한국어로 "안녕하세요"가 출력됩니다.
이처럼 array_key_exists() 함수는 배열에서 특정 키가 존재하는지 여부를 빠르고 간편하게 확인하는 데 유용합니다. 다양한 상황에서 사용하여 데이터의 유효성을 검증하고 로직을 구성할 수 있습니다.
같이 보기
- PHP in_array() 함수 - 배열에 특정 값이 있는지 확인
- PHP array_keys() 함수 – 배열 키 목록 가져오기
- PHP isset() 함수와 empty() 함수 – 개념 정리 및 사용법과 차이점
- PHP array_search() 함수 – 개념 정리 및 사용 예제
- PHP array_values() 함수 – 배열 값 목록 가져오기
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기