본문 바로가기
PROGRAMMING/PHP

PHP array_column() 다차원 배열 키로 값 추출

by itengineer 2023. 7. 7.
반응형

array_column() 함수는 PHP에서 사용되는 다차원 배열에서 특정 열(column)의 값을 추출하여 새로운 배열로 반환하는 함수입니다. 이 함수는 배열에서 특정 열(column)에 해당하는 값을 추출하거나 객체의 속성을 추출하는 데 사용됩니다.

다음은 array_column() 함수의 구문입니다.

array_column(array $input, mixed $column_key [, mixed $index_key = null ]) : array



- $input: 값을 추출할 다차원 배열입니다.
- $column_key: 추출할 열(column)의 키(key) 또는 인덱스(index)입니다. 정수, 문자열, 또는 null 값을 사용할 수 있습니다.
- $index_key (옵션): 새로운 배열의 키(key)로 사용할 열(column)의 키(key) 또는 인덱스(index)입니다. 이 매개변수를 생략하면 숫자형 키(key)가 할당됩니다.

다음은 array_column() 함수를 사용하여 배열에서 열(column)의 값을 추출하는 예시입니다.

$students = array(
    array('name' => 'John', 'age' => 20, 'grade' => 'A'),
    array('name' => 'Jane', 'age' => 22, 'grade' => 'B'),
    array('name' => 'Bob', 'age' => 21, 'grade' => 'A'),
);

$names = array_column($students, 'name');
print_r($names);
// 출력

Array
(
    [0] => John
    [1] => Jane
    [2] => Bob
)



위의 예시에서는 $students 다차원 배열에서 array_column() 함수를 사용하여 name 열(column)의 값을 추출합니다. 추출된 값들은 $names 배열에 저장되어 출력됩니다.

array_column() 함수를 사용하여 특정 열(column)의 값을 추출할 때, 다차원 배열의 각 요소는 연관 배열 또는 객체여야 합니다. 만약 다차원 배열의 요소가 연관 배열이 아니거나 객체가 아닌 경우, Notice 오류가 발생할 수 있습니다.

array_column() 함수는 선택적으로 새로운 배열의 키(key)를 설정할 수도 있습니다. $index_key 매개변수를 사용하여 특정 열(column)의 키(key)를 새로운 배열의 키(key)로 할당할 수 있습니다. 

$students = array(
    array('name' => 'John', 'age' => 20, 'grade' => 'A'),
    array('name' => 'Jane', 'age' => 22, 'grade' => 'B'),
    array('name' => 'Bob', 'age' => 21, 'grade' => 'A'),
);

$grades = array_column($students, 'grade', 'name');
print_r($grades);
// 출력

Array
(
    [John] => A
    [Jane] => B
    [Bob] => A
)



위의 예시에서는 $students 다차원 배열에서 grade 열(column)의 값을 추출하고, name 열(column)을 새로운 배열의 키(key)로 사용합니다. 이렇게 하면 학생 이름을 키(key)로, 학점을 값(value)으로 가지는 $grades 배열이 생성됩니다.

따라서, array_column() 함수를 사용하여 배열에서 열(column)의 값을 추출할 수 있습니다. 새로운 배열에는 해당 열(column)에 대한 값들이 저장되며, 필요에 따라 새로운 배열의 키(key)도 설정할 수 있습니다.

 

다음은 array_column() 함수를 사용한 몇 가지 예입니다.

  • 데이터 추출: 다차원 배열에서 특정 열의 값만 추출해야 할 때 array_column() 함수를 사용할 수 있습니다. 예를 들어, 데이터베이스 쿼리 결과에서 특정 필드의 값을 가져오거나 사용자 목록에서 특정 속성의 값을 추출할 수 있습니다.
$users = [
    ['id' => 1, 'name' => 'John', 'email' => 'john@example.com'],
    ['id' => 2, 'name' => 'Mary', 'email' => 'mary@example.com'],
    ['id' => 3, 'name' => 'Peter', 'email' => 'peter@example.com']
];

// 사용자 목록에서 모든 이메일 주소만 추출하여 새로운 배열 생성
$emails = array_column($users, 'email');
// $emails = ['john@example.com', 'mary@example.com', 'peter@example.com']

  • 키-값 매핑: 다차원 배열에서 특정 열을 키로, 다른 열을 값으로 사용하여 연관 배열을 생성할 때 array_column() 함수를 사용할 수 있습니다. 예를 들어, 데이터베이스에서 사용자 ID와 이름을 가져와 ID를 키로, 이름을 값으로 사용하여 사용자 연관 배열을 만들 수 있습니다.
$users = [
    ['id' => 1, 'name' => 'John'],
    ['id' => 2, 'name' => 'Mary'],
    ['id' => 3, 'name' => 'Peter']
];

// 사용자 목록에서 ID를 키로, 이름을 값으로 하는 연관 배열 생성
$userMap = array_column($users, 'name', 'id');
// $userMap = [1 => 'John', 2 => 'Mary', 3 => 'Peter']

  • 객체 변환: 객체 배열에서 특정 속성의 값을 추출하거나 변경해야 할 때 array_column() 함수를 사용할 수 있습니다. 예를 들어, 사용자 객체 배열에서 각 사용자의 이름만 가져오는 것이나 사용자 객체의 속성을 변경할 때 유용합니다.
class User {
    public $id;
    public $name;
    public $email;

    public function __construct($id, $name, $email) {
        $this->id = $id;
        $this->name = $name;
        $this->email = $email;
    }
}

$users = [
    new User(1, 'John', 'john@example.com'),
    new User(2, 'Mary', 'mary@example.com'),
    new User(3, 'Peter', 'peter@example.com')
];

// 사용자 객체 배열에서 모든 이름만 추출하여 새로운 배열 생성
$names = array_column($users, 'name');
// $names = ['John', 'Mary', 'Peter']



이러한 예는 array_column() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_column() 함수는 다차원 배열에서 특정 열의 값을 추출하거나 변환하는 데 유용하며, 데이터 처리 및 변환 작업에 활용될 수 있습니다.

반응형

댓글