💻 자주 쓰는 PHP 함수

[PHP 함수] array_keys() 함수 사용하기

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

PHP에서 배열을 다룰 때, 배열의 모든 키(인덱스)를 가져와야 하는 경우가 많습니다.
예를 들어, 연관 배열의 키 목록을 추출하거나, 특정 값을 가진 키를 찾거나, 다차원 배열을 처리할 때 유용하게 사용됩니다.

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

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


1. array_keys() 함수란?

기본 문법

array array_keys(array $array, mixed $search_value = null, bool $strict = false)

매개변수 설명

매개변수 설명

$array 키를 추출할 배열
$search_value (선택) 특정 값과 일치하는 키만 반환
$strict (선택) true 설정 시 타입까지 일치하는 값의 키만 반환

반환값

  • 배열의 모든 키를 새로운 배열로 반환
  • $search_value를 설정하면 특정 값을 가진 키만 반환

2. array_keys() 기본 예제

🔹 배열의 모든 키 가져오기

<?php
$data = ["name" => "Alice", "age" => 25, "city" => "New York"];
$keys = array_keys($data);
print_r($keys);
?>

🔹 실행 결과

Array
(
    [0] => name
    [1] => age
    [2] => city
)

연관 배열의 모든 키를 배열로 반환.


🔹 숫자 인덱스를 가진 배열에서도 사용 가능

<?php
$data = ["Apple", "Banana", "Cherry"];
$keys = array_keys($data);
print_r($keys);
?>

🔹 실행 결과

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)

➡ 인덱스 배열에서는 0부터 시작하는 숫자 인덱스가 반환됨.


3. 특정 값에 해당하는 키 찾기

🔹 특정 값을 가진 키만 반환

<?php
$data = ["a" => 100, "b" => 200, "c" => 100];
$keys = array_keys($data, 100);
print_r($keys);
?>

🔹 실행 결과

Array
(
    [0] => a
    [1] => c
)

➡ 값이 100인 키 "a"와 "c"만 반환됨.


🔹 strict 옵션을 사용하여 타입까지 일치하는 값 찾기

<?php
$data = ["a" => "100", "b" => 100, "c" => 100];
$keys = array_keys($data, 100, true);
print_r($keys);
?>

🔹 실행 결과

Array
(
    [0] => b
    [1] => c
)

➡ "100"(문자열)과 100(정수)를 구별하여 타입까지 일치하는 키만 반환.


4. array_keys()의 실용적인 활용 예제

🔹 1) 연관 배열의 모든 키 가져오기

<?php
$user = ["id" => 101, "name" => "Alice", "email" => "alice@example.com"];
$keys = array_keys($user);
print_r($keys);
?>

➡ 연관 배열에서 모든 키를 추출하여 배열로 저장할 수 있음.


🔹 2) 특정 값이 있는 키 찾기

<?php
$inventory = ["apple" => 10, "banana" => 5, "cherry" => 10];
$keys = array_keys($inventory, 10);
print_r($keys);
?>

재고 수량이 10개인 과일의 키(apple, cherry)만 반환.


🔹 3) 다차원 배열에서 키 추출

<?php
$data = [
    "user1" => ["name" => "Alice", "age" => 25],
    "user2" => ["name" => "Bob", "age" => 30],
];

$keys = array_keys($data);
print_r($keys);
?>

➡ 다차원 배열에서 첫 번째 차원의 키(user1, user2)만 추출할 수 있음.


🔹 4) 배열의 키를 이용한 동적 키 검색

<?php
$data = ["PHP" => "Web", "Python" => "AI", "JavaScript" => "Frontend"];
$keyToFind = "Python";

if (in_array($keyToFind, array_keys($data))) {
    echo "키 '$keyToFind'가 존재합니다.";
}
?>

➡ array_keys()를 사용하여 배열의 키 목록을 가져오고, 특정 키가 존재하는지 in_array()로 확인.


5. array_keys()와 다른 배열 함수 비교

함수 설명

array_keys() 배열의 모든 키를 반환
array_values() 배열의 모든 값을 반환
array_key_exists() 특정 키가 존재하는지 확인 (true/false 반환)
array_search() 특정 값을 가진 첫 번째 키를 반환

예제: array_keys() vs array_values()

<?php
$data = ["name" => "Alice", "age" => 25];

print_r(array_keys($data)); // 모든 키 반환
print_r(array_values($data)); // 모든 값 반환
?>

🔹 실행 결과

Array
(
    [0] => name
    [1] => age
)
Array
(
    [0] => Alice
    [1] => 25
)

array_keys()는 키 목록을, array_values()는 값 목록을 반환.


6. array_keys() 사용 시 주의할 점

배열이 비어 있으면 빈 배열 반환

<?php
$data = [];
print_r(array_keys($data)); // 빈 배열 반환
?>

객체는 array_keys()로 처리할 수 없음 (get_object_vars() 사용)

<?php
class User {
    public $name = "Alice";
    public $age = 25;
}

$user = new User();
print_r(array_keys(get_object_vars($user))); // ["name", "age"]
?>

➡ 객체를 배열처럼 다루려면 get_object_vars()로 변환 후 array_keys() 사용.

키가 숫자와 문자열 혼합된 경우 주의

<?php
$data = [1 => "A", "1" => "B", 2 => "C"];
print_r(array_keys($data));
?>

🔹 실행 결과

Array
(
    [0] => 1
    [1] => 2
)

➡ "1"(문자열)과 1(정수)는 같은 키로 인식됨.


7. array_keys() 활용 팁

배열이 비어 있는지 확인

<?php
$data = [];
if (empty(array_keys($data))) {
    echo "배열이 비어 있습니다.";
}
?>

연관 배열을 동적으로 키-값 변환

<?php
$data = ["name" => "Alice", "age" => 25];
$newArray = array_combine(array_keys($data), array_values($data));
print_r($newArray);
?>

➡ array_combine()을 사용하면 키-값 매칭을 유지하며 새로운 배열 생성 가능.


8. 결론

PHP의 array_keys() 함수는 배열에서 모든 키를 가져오는 필수적인 함수입니다.
이를 활용하면 데이터 검색, 특정 값의 키 찾기, 다차원 배열 탐색 등 다양한 작업을 효율적으로 수행할 수 있습니다.

📌 핵심 요약
✔️ array_keys()는 배열의 모든 키를 배열로 반환
✔️ 특정 값을 가진 키만 찾을 수도 있음
✔️ array_values()와 함께 사용하면 배열을 쉽게 변환 가능
✔️ 객체를 처리하려면 get_object_vars()를 사용해야 함

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

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

728x90