private function parserGoods($goods_sxe) { $goods = array(); foreach ($goods_sxe as $item) { $item_code = false; if (preg_match('/(.+)#(.+)/', $item->{'Ид'}, $matches)) { $good_code = strval($matches[1]); $item_code = strval($matches[2]); } else { $good_code = strval($item->{'Ид'}); } if (!isset($goods[$good_code])) { $goods[$good_code] = array(); $goods[$good_code] = $this->addGood($item, $good_code); } if ($item_code) { $goods[$good_code]['items'][$item_code] = $this->addItem($goods[$good_code]['id'], $item_code, $item); } } foreach ($goods as $good_code => $good) { $items = ShItems::findAll(['goods_id' => $good['id']]); if (isset($good['items'])) { foreach ($items as $item) { if (!isset($good['items'][$item->code])) { $item->state = 0; $item->save(); } } } else { foreach ($items as $item) { $item->state = 0; $item->save(); } } } }