2017-10-01 9 views
1

私は2つの結果セットがあります。ある配列のレコードを別の配列に存在しないレコードでフィルタリングするにはどうすればよいですか?

$array1 = (0=>'name1',1=>'name2'); 

$array2 = (0=>'name',1=>'name1',2=>'name2',3=>'name4'); 

私は配列2をループにしたいと私は使用することはできませんいくつかの理由について配列1

に存在しない任意のレコードを排除しますこの構文:

select * where not in(select ....) 
+0

を得たものである。この

ようarray_diffを使用してコードを投稿しますおそらく私たちはその問題を解決するのに役立つかもしれません。 –

+0

問題はプライマリキーが複数フィールドのキーであることです – BecauseGeek

+0

Laravelを使用していて、SQLクエリーが必要な場合は、Eloquentを正しく使用していません...何を使用しているのか、モデル)? – matiaslauriti

答えて

0

SQLの場合キーのフィールドが複数あるでは、次の構文を使用できます。

SELECT * 
FROM CompletedTasks 
WHERE (userID, taskID) NOT IN 
     (SELECT userID, taskID 
     FROM PlannedTasks 
    ) ; 
+0

これはそれを解決するようです – BecauseGeek

0

これを解決する方法はたくさんあります。

両方のアレイを1つにマージし、array_uniqueを使用して重複する値をフィルタリングできます。

他の方法では、array_diffを使用して、array1ではなくarray2にある一意の値のみを返すことができます。

私は、これはあなたの `...選択しないで...`に問題がある場合は、私が

$array1 = ['name1', 'name2', 'surname2', 'surname3']; 

$array2 = ['name', 'name1', 'name2', 'name4', 'surname', 'surname3', 'surname2']; 

var_dump(array_diff($array2, $array1)); 

array(3) { [0]=> string(4) "name" [3]=> string(5) "name4" [4]=> string(7) "surname" } 
+0

私は問題を解決できませんでした。 – BecauseGeek

関連する問題