キーと値のペアの数が等しい 2 つの連想配列がある場合、両方に存在するキーと値のペアを提供する 3 番目の配列を作成する効率的な方法はありますか。同一のキーまたは同一の値だけでなく、同一のキーと値のペアである必要があります (array_intersect は同一のキーのみを識別します)。乾杯
4 に答える
3
$array3 = array_intersect_assoc($array1, $array2);
array_intersect_assocについて説明している PHP マニュアルを参照してください。 array_intersect_assoc() は、すべての引数に存在する array1 のすべての値を含む配列を返します。array_intersect() とは異なり、比較ではキーが使用されることに注意してください。
于 2013-07-18T19:51:55.360 に答える
1
$a
と$b
が配列の場合、次のよう$c
に3 番目の配列を取得できます。
$c = array_intersect_assoc($a, $b);
ネイティブのarray_intersect_assoc関数を使用しました。
于 2013-07-18T20:15:02.730 に答える
0
簡単にするために、両方の配列をマージしてから重複を削除します
両方の配列をマージします。
function merge_common_keys(){
$arr = func_get_args();
$num = func_num_args();
$keys = array();
$i = 0;
for($i=0;$i<$num;++$i){
$keys = array_merge($keys, array_keys($arr[$i]));
}
$keys = array_unique($keys);
$merged = array();
foreach($keys as $key){
$merged[$key] = array();
for($i=0;$i<$num;++$i){
$merged[$key][] = isset($arr[$i][$key])?$arr[$i][$key]:null;
}
}
return $merged;
}
マージしてから重複を削除
$merged = merge_common_keys($array1,$array2);
$unique = array_unique($merged );
于 2013-07-18T19:58:33.407 に答える
0
配列の両方でキーを取得し、両方の配列で値を取得する方法は知っていますが、キーと値の共通部分は知りません。ただし、複雑ではありません。配列 $a と $b があり、配列 $c を作成したいとします。
$c = array();
foreach($a as $k=>$v) if($b[$k] == $v) $c[$k]=$v;
$b[$k] が設定されていないとエラーがスローされますが、必要に応じて無視できます。
于 2013-07-18T19:54:15.223 に答える