배열 array_column

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

array_column — 입력 배열의 단일 열에서 값을 반환합니다.


설명

array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array

array_column()column_key로 식별되는 array의 단일 열에서 값을 반환합니다. 선택적으로 index_key는 입력 배열의 index_key 열 값으로 반환된 배열의 값을 인덱싱하기 위해 제공될 수 있습니다.


매개변수

array
값 열을 가져올 다차원 배열 또는 개체 배열입니다. 개체 배열이 제공되면 공용 속성을 직접 가져올 수 있습니다. protected 또는 private 속성을 가져오려면 클래스에서 __get()__isset() 매직 메서드를 모두 구현해야 합니다.
column_key
반환할 값의 열입니다. 이 값은 검색하려는 열의 정수 키이거나 연관 배열 또는 속성 이름의 문자열 키 이름일 수 있습니다. 완전한 배열이나 객체를 반환하기 위해 null일 수도 있습니다(이것은 배열을 다시 인덱싱하기 위해 index_key와 함께 유용합니다).
index_key
반환된 배열의 인덱스/키로 사용할 열입니다. 이 값은 열의 정수 키이거나 문자열 키 이름일 수 있습니다. 값은 배열 키에 대해 평소와 같이 cast됩니다(그러나 PHP 8.0.0 이전에는 문자열로의 변환을 지원하는 객체도 허용되었습니다).

반환 값

입력 배열에서 단일 열을 나타내는 값 배열을 반환합니다.


변경 로그

버전 설명
8.0.0 index_key 매개변수로 표시된 열의 개체는 더 이상 문자열로 캐스팅되지 않으며 대신 TypeError가 발생합니다.

Examples

예제 #1 레코드 집합에서 이름 열 가져오기

                  
<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);

$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)
                

예제 #2 "id" 열로 인덱싱된 레코드 집합에서 성의 열을 가져옵니다.

                  
<?php
// Using the $records array from Example #1
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)
                

예제 #3 개체의 공개 "username" 속성에서 사용자 이름 열 가져오기

                  
<?php
class User
{
    public $username;

    public function __construct(string $username)
    {
        $this->username = $username;
    }
}

$users = [
    new User('user 1'),
    new User('user 2'),
    new User('user 3'),
];

print_r(array_column($users, 'username'));
?>
                  
                

위의 예는 다음을 출력합니다.

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

예제 #4 magic __get() 메서드를 사용하여 객체의 개인 "name" 속성에서 이름 열을 가져옵니다.

                  
<?php
class Person
{
    private $name;

    public function __construct(string $name)
    {
        $this->name = $name;
    }

    public function __get($prop)
    {
        return $this->$prop;
    }

    public function __isset($prop) : bool
    {
        return isset($this->$prop);
    }
}

$people = [
    new Person('Fred'),
    new Person('Jane'),
    new Person('John'),
];

print_r(array_column($people, 'name'));
?>
                  
                

위의 예는 다음을 출력합니다.

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

__isset()이 제공되지 않으면 빈 배열이 반환됩니다.