1. PHP の組み込み関数 array_intersect() を直接使用できます。
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() は、配列、この配列には、他のすべてのパラメーター配列にも表示される array1 のすべての値が含まれます。キー名は変更されないことに注意してください。
コード:
コードをコピー コードは次のとおりです:
$array1 = array(" a" => "緑", "赤", "青");
$array2 = array("b" => "緑", "黄", "赤"); >$result = array_intersect($array1, $array2);
?>
コードをコピーします コードは次のとおりです:
< ?php
function my_array_same($a){
$b = array_unique($a);
$r = array_diff_key($a,$b); echo "
";
$k=var_dump(array_unique($r));
return $k;
}
$a = array("red", "green", "ピンク", "赤", "ピンク", "赤");
$r=my_array_same($a);
var_dump(array_unique($r)>?> ;
出力結果:
array(2) { [3]=>
string(3) "red"
[5]=> 🎜>string(4) "pink "
}
3. 次のように書くこともできます:
コードコードは次のとおりです。 function my_array_intersect($arr1,$arr2){
for($i=0;$i$temp[] =$arr1[$i];
}
for($i=0;$i$temp[]=$arr2[$i];
}
sort($temp);
for($i=0;$iif ($temp[$i]==$temp[$i 1])
$get[]=$temp[$i]
} >return $get;
}
$array1 = array("green", "red", "blue");
$array2 = array("green", " yellow", "red") ;
エコー "
print_r(my_array_intersect($array1, $array2));
エコー
?>
それが 1 次元配列の場合、3 番目のアルゴリズムは最初のアルゴリズムよりも高速です。上記のアルゴリズムはすべて 1 次元配列に適していますが、多次元配列で同じ要素を見つけるにはどうすればよいでしょうか。
アイデア: 多次元配列を 1 次元配列に変換し、上記のアルゴリズムを使用して出力できます。
コード:
コードをコピー
コードは次のとおりです。
function toarr($arr){ //はい 配列は再帰され、文字列として返されます。 foreach ($arr as $k=>$v){ if (!is_array($v)) { $str.=$ v." "; }
else{$str.=toarr($v);
}
return $str; recursive function*/
上記の式は、多次元配列を文字列に変換し、それを expode 関数を使用して 1 次元配列に変換します。
考えてみてください。これは、データベースが同じ名前の特定のフィールドの値を返す場合にも当てはまります。もちろん、SQL ステートメントを通じても実現できます。