У меня возникли сложности с чем-то. Я пытаюсь взять файл XML и превратить его в файл XLS с помощью PhpSpreadSheet.
Я зацикливаюсь на файле XML, только что найдя и добавляя необходимые данные в массив, и в конце каждого элемента я помещаю этот массив в массив данных, чтобы получить что-то вроде этого.
foreach ( $namespaces as $namespace ) {
foreach ( (array) $item->children( $namespace ) as $key => $child ) {
if ( is_object( $child ) || is_array( $child ) ) {
foreach ( (array) $child as $childKey => $childChild ) {
$_item[ $key . '__' . $childKey ] = is_numeric( $childChild ) ? (float) $childChild : (string) $childChild;
}
} else {
$_item[ $key ] = (string) $child;
}
}
}
$workSheetData[] = $_item;
Я также создаю одномерный массив, в котором ключи и значения одинаковы для использования в качестве заголовков для моего файла XLS. Этот массив $ headers добавляется к каждой итерации для добавления новых ключей, с которыми я могу столкнуться.
$_worksheetHeaders = array_combine(array_keys($_item),array_keys($_item));
$worksheetHeaders += $_worksheetHeaders;
Теперь у меня есть определенные строки, в которых есть несколько столбцов чего-то, и все они имеют свои собственные ключи, но поскольку не во всех строках есть все ключи, мне нужно добавить недостающие ключи из массива заголовков в правый массив 2-го уровня $ workSheetData с пустой строкой.
Кроме того, поскольку заголовок добавляется, мне нужно отсортировать массив данных таким же образом, как и заголовки, чтобы нужные данные оказались в правом столбце.
Любая помощь будет оценена.