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 개발을 해보세요! 🚀
💡 도움이 되셨다면 공유해주세요! 😊
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] file_put_contents() 함수 완벽 가이드 (20) | 2025.03.24 |
---|---|
[PHP 함수] array_key_exists() 함수 사용 가이드 (18) | 2025.03.23 |
[PHP 함수] strlen() 함수로 문자열의 길이를 구하기 (34) | 2025.03.22 |
[PHP 함수] is_array()로 배열 여부 확인하기 (22) | 2025.03.22 |
[PHP 함수] in_array() 함수로 배열 내에 특정 값의 존재 여부 확인하기 (16) | 2025.03.21 |