如果数据库中存在id,则从数组中删除?

时间:2015-10-31 12:00:02

标签: php mysql arrays

我从api中提取数据,因此我有一个循环将一些ID存储到数组中。

我需要做的是从我的数据库中选择所有ID,然后从初始数组中删除在数据库中找到的所有ID。所以我可以继续查询我目前没有的ID的api。

为了更有意义,请看下面的内容:

$matches = $database->get_results('SELECT match_id FROM `matches` WHERE `order_id`='.$order_id);

if ($matchlist->totalGames !== 0) {
    foreach ($matchlist as $key) {
      $gameIds[] = $key->matchId;
    }
}

我需要从$ gameIds中删除id,如果它们已存储在$ matches中。

有什么想法吗? 感谢

我试过了:

$matches = $database->get_results('SELECT `match_id` FROM `matches` WHERE `order_id`='.$order_id);
if ($matchlist->totalGames !== 0) {
    foreach ($matchlist as $key) {
      $gameIds[] = $key->matchId;
    }
    $arr_matches = object2array($matches);
    $new_array = array_diff($arr_matches, $gameIds);
    var_dump($new_array);
}

错误:

Catchable fatal error: Object of class stdClass could not be converted to string

1 个答案:

答案 0 :(得分:1)

第1步:将对象更改为数组

function object2array($object) 
{
    if (is_object($object)):
        foreach ($object as $key => $value):
            $array[$key] = $value;
        endforeach;
    else:
        $array = $object;
    endif;
    return $array;
}

第2步:

$arr_matches = object2array($matches)

$new_array = array_diff($arr_matches , $gameIds);
// Will remove all elements contained in $gameIds from $arr_matches array.