0

こんなことをしたのを覚えているので、今は本当にバカだと思います。しかし今、私の頭は空っぽで、これは本当に問題のように見えます。

2つのアレイがあります。初め:

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

そして2番目の1つ:

array (
  0 => '3',
  1 => '4',
)

私がやりたいのは、2番目の配列から値を取得し、それを最初の配列の値と一致させることです。これどうやってするの?

4

2 に答える 2

1

あなたが「価値によって」と言うとき、私はあなたがid価値によって意味していると仮定します、その場合、あなたがid価値がキーより1つ小さいことをすでに知っているならば、あなたはこれをすることができます:

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()ただし、必要な要素を含む配列を取得するために使用できるもう1つのトリックは、次のように使用することです。

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

$keepこれで、必要な2つの値の配列が含まれ、それに応じてループすることができます。

于 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 に答える