在 php 中与另一个数组相交关联数组
Intersect associative array from another array in php
我有两个数组
$a = array(
array(
'id' => 1,
'name' => "Facebook"
),
array(
'id' => 2,
'name' => "Twitter"
),
array(
'id' => 3,
'name' => "Google"
),
array(
'id' => 4,
'name' => "Linkdin"
),
array(
'id' => 5,
'name' => "Github"
),
);
另一个是,
$b = array(1, 3, 5);
根据$b数组的值,选择$a关联数组id作为结果。
所以结果将是,
$result = $a = array(
array(
'id' => 1,
'name' => "Facebook"
),
array(
'id' => 3,
'name' => "Google"
),
array(
'id' => 5,
'name' => "Github"
),
);
简单的一行(通过 4 行可读性更强):
$result = array_filter(
$a,
function($v) use ($b) { return in_array($v['id'], $b); }
);
foreach ($a as $key => $value) {
if (in_array($value['id'], $b)) {
$result[] = $value;
}
}
计算交集的另一种方法:
$result = array_intersect_key(array_column($a, null, 'id'), array_flip($b));
- 通过
id
重新索引$a
- 翻转
$b
以获取值作为键
- 计算键的交集
我有两个数组
$a = array( array( 'id' => 1, 'name' => "Facebook" ), array( 'id' => 2, 'name' => "Twitter" ), array( 'id' => 3, 'name' => "Google" ), array( 'id' => 4, 'name' => "Linkdin" ), array( 'id' => 5, 'name' => "Github" ), );
另一个是,
$b = array(1, 3, 5);
根据$b数组的值,选择$a关联数组id作为结果。
$result = $a = array( array( 'id' => 1, 'name' => "Facebook" ), array( 'id' => 3, 'name' => "Google" ), array( 'id' => 5, 'name' => "Github" ), );
简单的一行(通过 4 行可读性更强):
$result = array_filter(
$a,
function($v) use ($b) { return in_array($v['id'], $b); }
);
foreach ($a as $key => $value) {
if (in_array($value['id'], $b)) {
$result[] = $value;
}
}
计算交集的另一种方法:
$result = array_intersect_key(array_column($a, null, 'id'), array_flip($b));
- 通过
id
重新索引 - 翻转
$b
以获取值作为键 - 计算键的交集
$a