2012-02-22 27 views
0

は、例えば、私はPHPで二つの配列を有する:PHPで2つの配列のユニークな要素を見つけるには?

$arr1 = array(1,3,5); 
$arr2 = array(1,4,6); 

Iは、それぞれ、各アレイに固有の要素を含むと、二つの新しいアレイを作成したいです。これを実現するための最良の方法だろう何

$arr1_uniques = array(3,5); 
$arr2_uniques = array(4,6); 

:だから私は、出力として、次の二つの配列を取得したいですか?

答えて

6

使用array_diff()そうのように、他の各配列を減算する:あなたはその問題を達成するためにarray_diff機能を使用することができます

$arr1_uniques = array_diff($arr1, $arr2); 
$arr2_uniques = array_diff($arr2, $arr1); 
+0

実際には、他の配列との交差と直接diffをスキップすることができます。存在しない要素を削除しても影響はありません。 –

+0

マニュアルで宣言されているように、array_diffとして複製を見つける必要はありません。「他の配列には存在しないarray1からのすべてのエントリを含む配列を返します。 – Electronick

+0

クール、私はそれを逃した - 明らかに私は数ヶ月間積極的に使用されていない言語で質問に答えるべきではありません。編集されました。 – BoltClock

0

。探している結果を得るには2回使用する必要があります。

0

あなた自身の関数を書くことができます。例:

function uniq(array $arr){ 

$temp_arr = []; 
for ($i = 0; $i < sizeof($arr); $i++) { 
    if (in_array($arr[$i], $temp_arr)) { 
      continue; 
    } 

    $temp_arr[] = $arr[$i]; 

    } 

return $temp_arr; 
} 

print_r(uniq([1, 2, 3, 6, 6, 6, 7, 8, 7, 2, 2, 3, 6, 7, 0, 12, 123, 1, 4, 7, 66, 77])); 

///Output: Array 
(
[0] => 1 
[1] => 2 
[2] => 3 
[3] => 6 
[4] => 7 
[5] => 8 
[6] => 0 
[7] => 12 
[8] => 123 
[9] => 4 
[10] => 66 
[11] => 77 
) 
+0

既に組み込み関数があることを考えれば、それは良い考えではありません。 – JJJ

関連する問題