我觉得自己真的很蠢,因为我记得做过这样的事情。但现在我的脑袋是空的,这似乎看起来像一个问题。
我有两个数组。第一:
array (
0 =>
array (
'id' => '1',
'name' => 'Blizzard',
'slug' => 'blizzard',
),
1 =>
array (
'id' => '2',
'name' => 'Id Software',
'slug' => 'id-software',
),
2 =>
array (
'id' => '3',
'name' => 'Capcom',
'slug' => 'capcom',
),
3 =>
array (
'id' => '4',
'name' => 'Maxis',
'slug' => 'maxis',
),
4 =>
array (
'id' => '5',
'name' => 'Electronic Arts',
'slug' => 'electronic-arts',
),
)
并且一个人:
array (
0 => '3',
1 => '4',
)
我想要做的是,从 secound 数组中获取值,并将其与第一个数据的值相匹配。我怎么能这样做?
答案 0 :(得分:1)
当你说“按价值”时,我假设你的意思是id
,在这种情况下,如果你已经知道id
值比关键字少一个,你可以这样做:
foreach( $second as $id) {
$key = $id - 1;
$row = $first[ $key ];
echo $row['name'];
}
否则,您必须循环/搜索特定的id
:
foreach( $second as $id) {
foreach( $first as $row) {
if( $row['id'] == $id) {
echo $row['name']; break;
}
}
}
但是,您可以使用另一个技巧来获取包含所需元素的数组是使用array_filter()
,如下所示:
$second = array( 3, 4);
$keep = array_filter( $first, function( $el) use( $second) {
return in_array( $el['id'], $second);
});
现在$keep
将包含您想要的两个值的数组,您可以相应地循环它们。
答案 1 :(得分:0)
这样的东西?
$new_array = array();
foreach ( $secoundarray as $key => $value ) {
$new_array[$key] = $firstarray[$value];
}