Правильный код, как исправить грабли.
Всем привет.
Коротко что это делает. Есть апи которая присылает данные, я хочу их вставить в БД, но что бы избежать дублирования сделал одно поле уникальным в таблице. То что вы видите костыль, а как сделать лучше не знаю, как избавится от форичей? Суть вопроса как сравнить два массива так что бы остался один с теми записями у которых ай ди не совпадает ни с одной записью ай ди во втором массиве Есть вот такой фрагмента кода: $inventoryId = 436; $this->Model('M_Soap'); $M_Soap = new Soap(); Возвращает многомерный массив $arrProducts = $M_Soap->getInventoryProducts($inventoryId); Беру все ай ди из того что пришло foreach ($arrProducts as $product) { $arr[] = $product['id']; } Делаю селект в БД всех записей если они есть под таким ай ди $productsInDb = $M_Product->getUniqueRecords($arr); Сравниваю то что пришло и то что хранится в БД, если есть совпадение то удаляю из того что пришло по ай ди foreach ($arrProducts as $product) { foreach ($productsInDb as $productDb){ if ($product['id'] = $productDb['id_supplier']){ unset($arrProducts[$product['id']]); } } } Вставляю в БД, если вдруг совпадет по ай ди с тем что есть в БД то вставить неполучится (ун индекс на поле) $M_Product->addInventoryById($arrProducts); |
Если я вас правильно понял, то array search в помощь
|
Часовой пояс GMT +3, время: 20:09. |