31

次のような配列関数を探しています。

$myArray = array(
  'apple'=>'red',
  'banana'=>'yellow',
  'lettuce'=>'green',
  'strawberry'=>'red',
  'tomato'=>'red'
);
$keys = array(
  'lettuce',
  'tomato'
);

$ret = sub_array($myArray, $keys);

$ret は次のとおりです。

array(
  'lettuce'=>'green',
  'tomato'=>'red'
);

自分で書き留めても問題ありませんが、foreach ループを避けて、組み込み関数または組み込み関数の組み合わせを採用したいと考えています。一般的で一般的な配列操作のように思えます-ループが唯一のオプションである場合、私は驚くでしょう。

4

4 に答える 4

6

array_intersect_key を使用できますが、キーと値を持つ 2 番目の配列を使用します。比較のためにキーを使用して配列の共通部分を計算します

array_intersect_key

<?php
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
$array3 = array('green' => '', 'blue' => '', 'yellow' => '', 'cyan' => '');
$array4 = array('green', 'blue', 'yellow', 'cyan');

var_dump(array_intersect_key($array1, $array2));
var_dump(array_intersect_key($array1, $array3));
var_dump(array_intersect_key($array1, $array4));
?>

上記の例では、次のように出力されます。

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

array(0) {
}
于 2012-09-22T11:41:24.643 に答える