PHP에서 배열을 다룰 때, 배열의 모든 값(value)만 추출하여 새로운 배열을 생성해야 하는 경우가 많습니다.
예를 들어, 연관 배열(Associative Array)의 키를 제거하고 순차적 인덱스를 부여하거나, 특정 값만 추출할 때 유용하게 사용됩니다.
이러한 기능을 수행하는 대표적인 함수가 바로 array_values() 입니다.
이 글에서는 PHP array_values() 함수의 사용법, 다양한 활용 예제, array_keys()와의 차이점, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다. 🚀
1. array_values() 함수란?
✅ 기본 문법
array array_values(array $array)
✅ 매개변수 설명
매개변수 설명
$array | 값을 추출할 배열 |
✅ 반환값
- 배열의 모든 값(value)만 추출하여 인덱스를 새로 부여한 배열 반환
- 기존의 키는 유지되지 않고, 0부터 시작하는 숫자 키로 재배열됨
2. array_values() 기본 예제
🔹 연관 배열에서 값만 추출
<?php
$data = ["name" => "Alice", "age" => 25, "city" => "New York"];
$values = array_values($data);
print_r($values);
?>
🔹 실행 결과
Array
(
[0] => Alice
[1] => 25
[2] => New York
)
➡ 기존 키는 제거되고, 인덱스가 0부터 시작하는 배열로 변환됩니다.
🔹 숫자 키가 연속되지 않는 배열
<?php
$data = [2 => "Apple", 5 => "Banana", 10 => "Cherry"];
$values = array_values($data);
print_r($values);
?>
🔹 실행 결과
Array
(
[0] => Apple
[1] => Banana
[2] => Cherry
)
➡ 기존의 숫자 키(2, 5, 10)가 0부터 다시 할당됨.
3. array_values()의 실용적인 활용 예제
🔹 1) JSON 데이터를 배열로 변환
<?php
$json = '{"name": "John", "age": 30, "city": "Seoul"}';
$data = json_decode($json, true);
$values = array_values($data);
print_r($values);
?>
➡ JSON 데이터를 배열로 변환한 후 값만 추출하여 인덱스 배열 생성.
🔹 2) 특정 필드 값만 추출 (array_column() 대체)
<?php
$users = [
["id" => 1, "name" => "Alice"],
["id" => 2, "name" => "Bob"],
["id" => 3, "name" => "Charlie"]
];
$names = array_values(array_column($users, "name"));
print_r($names);
?>
🔹 실행 결과
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
➡ array_column()을 사용하여 특정 필드 값만 추출한 후, array_values()로 재정렬.
🔹 3) 중복 제거 후 순차적 인덱스 배열 생성 (array_unique() 활용)
<?php
$data = ["apple", "banana", "apple", "grape"];
$uniqueValues = array_values(array_unique($data));
print_r($uniqueValues);
?>
🔹 실행 결과
Array
(
[0] => apple
[1] => banana
[2] => grape
)
➡ 중복을 제거한 후, 인덱스를 다시 0부터 정렬.
🔹 4) 다차원 배열에서 특정 값만 추출
<?php
$products = [
"A" => ["name" => "Laptop", "price" => 1000],
"B" => ["name" => "Phone", "price" => 500],
"C" => ["name" => "Tablet", "price" => 700]
];
$prices = array_values(array_column($products, "price"));
print_r($prices);
?>
🔹 실행 결과
Array
(
[0] => 1000
[1] => 500
[2] => 700
)
➡ array_column()으로 특정 값만 추출한 후 array_values()로 인덱스를 정렬.
4. array_values() vs array_keys() 차이점
함수 설명
array_values() | 배열의 모든 값을 반환 (키는 0부터 다시 부여됨) |
array_keys() | 배열의 모든 키를 반환 |
✅ 예제: array_values() vs array_keys()
<?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()는 값 목록을 반환.
5. array_values() 사용 시 주의할 점
✅ 연관 배열의 키는 삭제됨
<?php
$data = ["first" => "A", "second" => "B"];
$values = array_values($data);
print_r($values);
?>
➡ 키가 삭제되고 값만 남음.
✅ 빈 배열을 처리하면 빈 배열 반환
<?php
print_r(array_values([])); // 빈 배열 반환
?>
✅ 숫자 키가 연속되지 않으면 자동으로 0부터 재배열됨
<?php
$data = [3 => "X", 10 => "Y"];
print_r(array_values($data));
?>
➡ 숫자 키는 무시되고 0부터 다시 부여됨.
✅ 객체는 array_values()로 처리할 수 없음 (get_object_vars() 사용)
<?php
class User {
public $name = "Alice";
public $age = 25;
}
$user = new User();
$values = array_values(get_object_vars($user));
print_r($values);
?>
➡ 객체를 처리하려면 get_object_vars()로 배열 변환 후 array_values() 적용.
6. array_values() 활용 팁
✅ 배열을 JSON으로 변환하기 전에 키 정리
<?php
$data = ["id" => 101, "name" => "Alice"];
$json = json_encode(array_values($data));
echo $json; // ["101","Alice"]
?>
✅ 배열 값만 출력할 때 사용
<?php
$data = ["A" => "Red", "B" => "Blue"];
echo implode(", ", array_values($data)); // Red, Blue
?>
✅ 배열 값 정렬 후 재인덱싱
<?php
$data = ["banana", "apple", "cherry"];
sort($data);
$sortedValues = array_values($data);
print_r($sortedValues);
?>
➡ 정렬 후 인덱스를 다시 0부터 정렬.
7. 결론
PHP의 array_values() 함수는 배열의 모든 값을 추출하여 새로운 배열을 생성하는 필수적인 함수입니다.
이를 활용하면 연관 배열을 순차적 배열로 변환, 중복 제거 후 정렬, JSON 데이터 처리, 특정 값만 추출 등 다양한 작업을 수행할 수 있습니다.
📌 핵심 요약
✔️ array_values()는 배열의 값만 추출하여 인덱스를 0부터 재정렬
✔️ 연관 배열의 키는 삭제됨
✔️ 다차원 배열에서는 array_column()과 함께 사용하면 유용
✔️ 객체를 다룰 때는 get_object_vars()를 사용해야 함
이제 array_values()를 활용하여 더욱 효율적인 PHP 개발을 해보세요!

'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] trim() 함수로 공백 제거하기 (4) | 2025.03.26 |
---|---|
[PHP 함수] is_file() 함수로 파일 확인하기 (10) | 2025.03.25 |
[PHP 함수] file_get_contents()로 웹 페이지 가져오기 (21) | 2025.03.24 |
[PHP 함수] file_put_contents() 함수 완벽 가이드 (20) | 2025.03.24 |
[PHP 함수] array_key_exists() 함수 사용 가이드 (18) | 2025.03.23 |