有两组代码,每组代码有两个不同的数组
首先是这个
$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
)
)
第二个就是这个
$this->db->select('user_id');
$query_two = $this->db->get('request_user');
echo "<pre>";
print_r( $query_two->result());
echo "</pre>";
并给出以下结果
Array
(
[0] => stdClass Object
(
[user_id] => 1
)
)
我希望得到不应该具有重复值的最终数组,例如在上面的2个数组中,1在数组中都是常见的,所以它不应该存在,在结果数组中我应该只得到值2
答案 0 :(得分:0)
您可以采取以下方法。从第二个数组中列出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)
}
}