2016-12-26 23 views
0

から似た値を削除した後、コードの2セットがあり、それぞれが2つの異なる配列を与える結果の配列は、2つの異なる配列

最初のセットは、この

$this->db->select('id'); 
$query = $this->db->get('user'); 
echo "<pre>"; 
print_r($query->result()); 
echo "</pre>"; 

されており、次のような結果に

を与えなさい
Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
     ) 

    [1] => stdClass Object 
     (
      [id] => 2 
     ) 

) 

2つ目は、この

$this->db->select('user_id'); 
$query_two = $this->db->get('request_user'); 
echo "<pre>"; 
print_r($query_two->result()); 
echo "</pre>"; 
ですそれはそこに生じたにすべきではないので

そして、私は上記の2アレイ1に重複する値を持つべきではない、最終的な配列、例えばを取得したい、次の結果に

Array 
(
    [0] => stdClass Object 
     (
      [user_id] => 1 
     ) 

) 

を与えるには、アレイの両方で共通であります配列私は値2を取得する必要があります

答えて

0

次のアプローチを取ることができます。 2番目の配列からIDのリストを作成します。そして、そのリストを使って最初のものをフィルタリングします。 idがそのリストにない場合は、それを保管してください。

<?php 

$one = [ 
    (object) ['id' => 1], 
    (object) ['id' => 2], 
]; 
$two = [ 
    (object) ['id' => 1], 
]; 

$ids_in_two = []; 
foreach($two as $val) { 
    $ids_in_two[] = $val->id; 
} 

$filtered = array_filter($one, function($val) use ($ids_in_two) { 
    return !in_array($val->id, $ids_in_two); 
}); 

var_dump($filtered); 

出力:

array(1) { 
    [0]=> 
    object(stdClass)#1 (1) { 
    ["id"]=> 
    int(2) 
    } 
} 
関連する問題