【问题标题】:Get a resulting array after removing similiar values from 2 different array从 2 个不同的数组中删除相似的值后得到一个结果数组
【发布时间】:2016-12-26 07:22:05
【问题描述】:

有 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
        )

)

第二个是这个

$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

【问题讨论】:

    标签: php arrays object multidimensional-array


    【解决方案1】:

    您可以采取以下方法。从您的第二个数组中创建一个 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)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多