После переделки скрипта для генерации 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));