0

我现在感觉真的很愚蠢,因为我记得我做过这样的事情。但现在我的脑袋是空的,这看起来真的是个问题。

我有两个数组。第一的:

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',
)

我想要做的是,从第二个数组中获取值并将其与第一个数组的值匹配。我怎样才能做到这一点?

4

2 回答 2

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;
         }
    }        
}

但是,您可以用来获取包含您想要的元素的数组的另一个技巧是 use array_filter(),如下所示:

$second = array( 3, 4);
$keep = array_filter( $first, function( $el) use( $second) { 
    return in_array( $el['id'], $second); 
}); 

现在$keep将包含您想要的两个值的数组,您可以相应地循环它们。

于 2012-08-07T13:31:34.910 回答
0

像这样的东西?

$new_array = array();
foreach ( $secoundarray as $key => $value ) {
  $new_array[$key] = $firstarray[$value];
}
于 2012-08-07T13:28:35.307 回答