После переделки скрипта для генерации XML с товарами возникла задача, нужно было сравнить результат старого и нового генератора.
Php спирит для сравнения товаров в двух YML (xml)
21.01.2024
Пример скрипта который проверяем, что в двух XML выгрузках в формате Яндекс Марета (YML), одинаковые товары:
<?php ini_set('display_errors', '1'); error_reporting(2047); function getAllOffersIds($sFileName) { $i = 0; $aIds = []; $oXml = simplexml_load_file($sFileName); $iCount = count($oXml->shop->offers->offer); foreach($oXml->shop->offers->offer as $oOffer) { $aAttr = $oOffer->attributes(); $aIds[] = (string) $aAttr['id']; $i++; echo $sFileName. ': ' . $i . '/' . $iCount . PHP_EOL; } return $aIds; } // Start: $sFileName1 = 'search'; $sFileName2 = 'search_new'; $sXMLFileName1 = $sFileName1 . '.xml'; $sXMLFileName2 = $sFileName2 . '.xml'; unlink($sXMLFileName1); unlink($sXMLFileName2); exec('wget https://www.TEST.ru/export/'.$sXMLFileName1); exec('wget https://www.TEST.ru/export/'.$sXMLFileName2); $aSearchIds = getAllOffersIds($sXMLFileName1); $aSearchNewIds = getAllOffersIds($sXMLFileName2); $aFullDiff = array_merge(array_diff($aSearchIds, $aSearchNewIds), array_diff($aSearchNewIds, $aSearchIds)); print_r($aFullDiff); //file_put_contents('ids_'.$sFileName1.'.txt', implode("\n", $aSearchIds)); //file_put_contents('ids_'.$sFileName2.'.txt', implode("\n", $aSearchNewIds));