Фильтрация по массиву и добавление значений для отсутствующих ключей - PullRequest
0 голосов
/ 28 августа 2018

У меня возникли сложности с чем-то. Я пытаюсь взять файл 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 с пустой строкой.

Кроме того, поскольку заголовок добавляется, мне нужно отсортировать массив данных таким же образом, как и заголовки, чтобы нужные данные оказались в правом столбце.

Любая помощь будет оценена.

...