配列を扱う時にとても有用な array_column
PHP
で配列を扱う時にとても有用な関数 array_column をご紹介します。
PHPマニュアル上でとても有用な例まで載っているのですがあまりこのような使われ方をせずに for
や foreach
を使用しているのを多々見るので今回記事化しました。
array_column
を使用すれば例えばセレクトボックスに入れるデータなど一括で簡単に作れますので作れます。
配列の中の連想配列から指定のキーを抜き出して配列する
配列の中の連想配列から指定のキーを抜き出して配列にします。
・PHP: array_column - Manual 例1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php
// データベースから返ってきたレコードセットの例
$records = [
[
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
],
[
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
],
[
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
],
[
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
]
];
$first_names = array_column($records, 'first_name');
print_r($first_names);
|
出力結果
1
2
3
4
5
6
7
| Array
(
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
)
|
配列の中の連想配列から指定した複数のキーを抜き出して配列する
配列の中の連想配列から指定した複数のキーを抜き出して配列します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| <?php
// データベースから返ってきたレコードセットの例
$records = [
[
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
],
[
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
],
[
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
],
[
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
]
];
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
|
出力結果
1
2
3
4
5
6
7
| Array
(
[2135] => Doe
[3245] => Smith
[5342] => Jones
[5623] => Doe
)
|
オブジェクトの public プロパティから指定のプロパティを抜き出して配列にする
オブジェクトの public プロパティから指定のプロパティを抜き出して配列にします。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?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'));
|
出力結果
1
2
3
4
5
6
| Array
(
[0] => user 1
[1] => user 2
[2] => user 3
)
|
オブジェクトの public プロパティから指定のプロパティを抜き出して配列にする
オブジェクトの public プロパティから指定のプロパティを抜き出して配列にします。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| <?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'));
|
出力結果
1
2
3
4
5
6
| Array
(
[0] => Fred
[1] => Jane
[2] => John
)
|