array_column

一、定义

  1. 功能:返回数组中指定的一列
  2. 用法:array_column(array $input, mixed $column_key[, mixed $index_key = null ]):array
  3. 说明:返回input数组中键值为column_key的列,如果指定了可选参数index_key,那么input数组中的这一列的值将作为返回数组中对应值的键。
  4. 参数
    • input:需要取出数组列的多维数组。 如果提供的是包含一组对象的数组,只有 public 属性会被直接取出。 为了也能取出 private 和 protected 属性,类必须实现 get() 和 isset() 魔术方法。
    • column_key:需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键,也可以是属性名。也可以是NULL,此时将返回整个数组(配合index_key参数来重置数组键的时候,非常管用)
    • index_key:作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。

二、demo

  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
28
29
30
31
32
33
34
$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
)

  1. 指定数组下标
1
2
3
4
5
6
7
8
9
10
11
$id_names = array_column($records, 'first_name', 'id');

print_r($id_names);

Array
(
[2135] => John
[3245] => Sally
[5342] => Jane
[5623] => Peter
)
  1. 结合array_combine一起使用
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$arr = [
[
'id' => 123,
'name' => 'test',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
[
'id' => 456,
'name' => 'test1',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
[
'id' => 789,
'name' => 'test2',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
];

$id = array_column($arr,'id');
$new = array_combine($id, $arr);
print_r($new);
Array
(
[123] => Array
(
[id] => 123
[name] => test
[age] => 10
[created] => 2019-07-03 12:12:12
)

[456] => Array
(
[id] => 456
[name] => test1
[age] => 10
[created] => 2019-07-03 12:12:12
)

[789] => Array
(
[id] => 789
[name] => test2
[age] => 10
[created] => 2019-07-03 12:12:12
)

)
  1. 神来之笔,同demo3
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$arr = [
[
'id' => 123,
'name' => 'test',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
[
'id' => 456,
'name' => 'test1',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
[
'id' => 789,
'name' => 'test2',
'age' => 10,
'created' => '2019-07-03 12:12:12'
],
];
$tmp = array_column($arr, null, 'id');
print_r($tmp);
Array
(
[123] => Array
(
[id] => 123
[name] => test
[age] => 10
[created] => 2019-07-03 12:12:12
)

[456] => Array
(
[id] => 456
[name] => test1
[age] => 10
[created] => 2019-07-03 12:12:12
)

[789] => Array
(
[id] => 789
[name] => test2
[age] => 10
[created] => 2019-07-03 12:12:12
)

)