私は2つの配列を持っています
$array1 = array(1, 2, 2, 3);
$array2 = array( 1, 2, 3,4);
そしていつしたか:
var_dump(array_diff($array1, $array2));
取得 :
array(0){}
出力として、しかし私は探しています:
array(1){[2]=>2}
誰かが私にそれを行う方法を教えてください
前もって感謝します
私は2つの配列を持っています
$array1 = array(1, 2, 2, 3);
$array2 = array( 1, 2, 3,4);
そしていつしたか:
var_dump(array_diff($array1, $array2));
取得 :
array(0){}
出力として、しかし私は探しています:
array(1){[2]=>2}
誰かが私にそれを行う方法を教えてください
前もって感謝します
これを試して
$array1 = array(1, 2, 2, 3, 4, 5, 5, 7);
$array2 = array(1, 2, 4, 6, 3, 3, 5);
$diff = array_filter($array1,
function ($val) use (&$array2) {
$key = array_search($val, $array2);
if ( $key === false ) return true;
unset($array2[$key]);
return false;
}
);
print_r($diff);
// Array ( [2] => 2 [6] => 5 [7] => 7 )
If you want to count number of duplicate element from same array as well as from multiple arrays, please use below code,
<?php
$array1 = array(1,2,2,3,7);
$array2 = array(1,2,3,4);
$diff_array = array();
$diff_array1 = array_count_values($array1);
$diff_array2 = array_count_values($array2);
$a = array_keys($diff_array1);
$b = array_keys($diff_array2);
for($i=0;$i<count($a);$i++)
{
if($a[$i] == $b[$i])
{
$x = $a[$i];
$y = $b[$i];
$diff_array1[$x] += $diff_array2[$y];
}
}
$diff_array1=array_diff($diff_array1, array('1'));
echo '<pre>';
print_r($diff_array1);
?>
これにより、目的の結果が得られます。
$array1 = array(1, 2, 2, 3);
$array2 = array( 1, 2, 3,4);
$countArray1 = array_count_values($array1);
$countArray2 = array_count_values($array2);
foreach($countArray1 as $value=>$count) {
if($count > 1) $dupArray[] = $value;
}
foreach($countArray2 as $value=>$count) {
if($count > 1) $dupArray[] = $value;
}
print_r($dupArray);
結果
配列 ( [0] => 2 )
説明
を使用array_count_values
すると、配列のすべての値がカウントされます。次のようになります。
配列 ( [1] => 1 [2] => 2 [3] => 1 ) 配列 ( [1] => 1 [2] => 1 [3] => 1 [4] => 1 )
次に、それぞれを反復処理して、array_count_values
複数回発生する値を見つけます。これは、重複する値のセットが複数ある場合に機能します。
$array1 = array(1, 2, 2, 3);
$array2 = array( 1, 2, 3, 4, 3);
結果
配列 ( [0] => 2 [1] => 3 )
洗練されていないかもしれませんが、これを行う簡単な方法は for ループです。
$diff_array = array();
for ($i = 0; ($i < count($array1)) and ($i < count($array2)); $i++)
{
if ($array1[$i] !== $array2[$i]) { $diff_array[$i] = $array1[$i]; }
}