배열 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()이 제공되지 않으면 빈 배열이 반환됩니다.