2 つの配列があるとします。
$a=array('1'=>'Apple','2'=>'Microsoft',
'3'=>'Microapple','4'=>'Applesoft','5'=>'Softapple');
$b=array(1,3);
$b array は、区別される配列 $a のキーを表します。
そして、次の値を持つ別の配列 $c を受け取ることを期待しています。
$c=array('2'=>'Microsoft','4'=>'Applesoft','5'=>'Softapple');
PHPマニュアルには2つの関数があります:
array_diff($array1,$array2); //difference of values
array_diff_key($array1,$array2);//difference of keys
しかし、ここでは上記のいずれも当てはまりません。
私たちは何をすべきか?
編集
貢献してくれてありがとう。
次のように事前定義された 2 つのアレイでいくつかのベンチマークを実行しました。
for ($i=0; $i < 10000; $i++) { //add 10000 values
$a[]=mt_rand(0, 1000000); //just some random number as a value
}
for ($i=0; $i < 10000; $i++) { //add 10000 values as keys of a
$b[]=mt_rand(0, 1000);
} //randomly from 0 to 1000 (eg does not cover all the range of keys)
各テストも 10000 回行われ、Nanne
のソリューションの平均時間は次のとおりです。
0.013398
そして次のいずれかdecereé
:
0.014865
これも素晴らしいです。
... in_array() に関する他の提案とは異なりますが、(その回答は削除されました):
foreach ($a as $key => $value)
if (!in_array($key, $b))
$c[$key] = $value;
上記は平均2秒でした。in_array() が $b をループして、値が存在するかどうかを確認する必要があるという明らかな理由からです。上記は、その方法の優れた例not
です。:-)