/** * @param $eBayProduct * @param Product $product * @return array */ private function separateVariations($eBayProduct, Product $product) { $foundVariations = []; $newVariations = []; // Find variations that are to be updated and separate the new ones foreach ($product->getVariationOptions() as $option) { $found = false; foreach ($eBayProduct->Variations->Variation as $ebayVariation) { if ($ebayVariation->SKU === $option['sku']) { $ebayVariation->Quantity = $option['quantity']; if (array_key_exists('price', $option) && $ebayVariation->StartPrice->value != $option['price']) { $ebayVariation->StartPrice = new AmountType(array('value' => doubleval($option['price']))); } $foundVariations[] = $ebayVariation; $found = true; break; } } if (!$found) { $newVariations[] = $option; } } return ['new' => $newVariations, 'found' => $foundVariations]; }