2016-12-26 1 views
0

Es gibt 2 Satz von Code und jeder gibt 2 verschiedene ArrayHolen Sie sich eine resultierende Array nach ähnlichen Werten von 2 verschiedenen Array Entfernen

erste Satz dieses

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

und gibt folgendes Ergebnis

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

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

) 

Zweitens ist diese

$this->db->select('user_id'); 
$query_two = $this->db->get('request_user'); 
echo "<pre>"; 
print_r($query_two->result()); 
echo "</pre>"; 

und das folgende Ergebnis liefert

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

) 

Ich wünsche letzte Reihe zu bekommen, die nicht die doppelten Werte haben sollten, zum Beispiel in der obigen 2-Array 1 ist sowohl in dem Array gemeinsam, so dass es nicht da sein sollte und in resultierenden Array ich sollte nur Wert 2 erhalten

Antwort

0

Sie könnten den folgenden Ansatz verwenden. Erstellen Sie eine Liste mit IDs aus Ihrem zweiten Array. Und dann verwende diese Liste, um die erste zu filtern. Wenn eine ID nicht in dieser Liste enthalten ist: Behalte sie.

<?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); 

Ausgang:

array(1) { 
    [0]=> 
    object(stdClass)#1 (1) { 
    ["id"]=> 
    int(2) 
    } 
} 
Verwandte Themen