💻 자주 쓰는 PHP 함수

[PHP 함수] array_values() 함수로 배열 다루기

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

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 개발을 해보세요! 

728x90