• Как отфильтровать дублирующие поля записей, выгруженные из БД MySQL для построения DOMDocument с целью последующего сохранения в XML-файл?

    @VadimFox
    В предложенный вами код особо не вчитывался, но предложу эту реализацию:
    Код


    <?php
    $inputData = 'SELECT ....'; //Получаем данные из БД
    
    $outputData = [];
    foreach ($inputData as $row){//Собираем данные в нужном формате
        if(!isset($outputData[ $row['Код'] ])){//Собираем основыне данные
            $outputData[ $row['Код'] ]['Свойства'] = $row['Свойства'];
            $outputData[ $row['Код'] ]['Раздел'] = $row['Раздел'];
        }
    
        $outputData[ $row['Код'] ]['Цены'][] = [//Собираем цены
            'Цена' => $row['Цена'],
            'Тип' => $row['Тип']
        ];
    }
    unset($inputData);//Удаляем оригинал данных
    
    //По итогу перебираем $outputData и формируем из имеющегося xml
    echo '<Товары>';
    foreach ($outputData as $key => $row){//Тут уже под свои нужды пишем =)
        echo '<Товар Код="'.$key.'">';
    
        foreach ($row as $rowInner){
            echo '<Цена Тип="'.$rowInner['Тип'].'">'.$rowInner['Цена'].'</Цена>';
        }
        
        /*
         * ...
         * ...
         */
        
        echo '</Товар>';
    }
    echo '</Товары>';




    В общем суть в том, что, проще сначала привести в порядок данные, сформировать их в более приятный для работы вид и уже потом проводить какие-то манипуляции
    Ответ написан
    3 комментария