/** * Method used by addRows to recursively parse cellValues into TableCellModels * * @see TableModel::addRows * @see TableCellModel * @param array $cells * @param bool $namedIndex * @return array containing TableCellModel objects * @throws \Exception */ private function parseCells(array $cells, $namedIndex = true) { $returnData = array(); foreach ($cells as $cellName => $cellValue) { if (is_array($cellValue)) { $merges = array(); foreach ($cellValue as $childField) { $merges = array_merge($merges, $this->parseCells($childField, false)); } $returnData = $this->mergeNestedCells($returnData, $merges); continue; } // The TableHeader holds 90% of the information, find it in order to resolve the rest $tableHeader = $this->getTableHeader($cellName, $cellValue); $tableCell = new TableCellModel($tableHeader->getName(), $this->extractRowValue($cells, $tableHeader->getSafeName())); $tableCell->setVisible($tableHeader->isVisible()); $tableCell->setDataType($tableHeader->getDataType()); $namedIndex ? $returnData[$tableHeader->getSafeName()] = $tableCell : ($returnData[] = $tableCell); } return $returnData; }