2015-10-31 3 views
1

Я извлекаю данные из api, и поэтому у меня есть цикл, в котором хранятся некоторые идентификаторы в массиве.Удалить из массива, если 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, если они уже хранятся в $ спичек.

Любые идеи? Благодаря

я пытался:

$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 
+0

так что вы хотите удалить значения из массива в базе данных, RIGHT? –

+0

Удалите значение из $ gameIds, если идентификатор уже существует в базе данных – Elevant

+0

, вы можете прокручивать '$ maches' и делать' unset', если он найден в '$ gameIds.' –

ответ

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. 
+0

. Я завтра выберу это первое, ENDIF; и endforeach; лучший подход, чем просто}? Есть ли ресурс, который я могу прочитать об этом? – Elevant

+0

Это то же самое, я должен был действительно повлиять на стиль кодирования, основанный на моей команде. О, вы можете сослаться на массив_дифф здесь: http://php.net/manual/en/function.array-diff.php – Nere

+1

Я исправил его, добавив еще один цикл в мой скрипт спасибо :) – Elevant

Смежные вопросы