Поскольку вы не предоставили никакого кода вместе с вашим ответом, я нарисую его, который, я думаю, будет, по крайней мере, похож на то, что вы используете - это создает массив, проходит по каждой строке таблицы и добавляет элемент подмассива с ключом, который находится во втором столбце. Из-за того, что он добавляет новый элемент каждый раз, он не перезаписывает предыдущий.
$array = [];
foreach ($table as $row) {
$array[$row[1]][] = $row[0];
}
ksort($array); // Sorts the array so that the keys are in ascending order
Вы можете использовать класс DOMDocument для переформатирования вашего кода:
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();
Use dom_import_simplexml
to convert to a DomElement. Then use its capacity to format output.
$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();
Решение Гамбо помогает. Вы можете работать с simpleXml выше, а затем добавить его в конце, чтобы отобразить и / или сохранить его с форматированием.
Код ниже повторяет его и сохраняет в файл (см. Комментарии в коде и удалите все, что вам не нужно. ):
//Format XML to save indented tree rather than one line
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
//Echo XML - remove this and following line if echo not desired
echo $dom->saveXML();
//Save XML to file - remove this and following line if save not desired
$dom->save('fileName.xml');