Piwik\DataTable\Renderer\Csv::flattenColumnArray PHP Метод

flattenColumnArray() приватный Метод

Flattens an array of column values so they can be outputted as CSV (which does not support nested structures).
private flattenColumnArray ( $columns, &$csvRow = [], $csvColumnNameTemplate = '%s' )
    private function flattenColumnArray($columns, &$csvRow = array(), $csvColumnNameTemplate = '%s')
    {
        foreach ($columns as $name => $value) {
            $csvName = sprintf($csvColumnNameTemplate, $this->getCsvColumnName($name));
            if (is_array($value)) {
                // if we're translating column names and this is an array of arrays, the column name
                // format becomes a bit more complicated. also in this case, we assume $value is not
                // nested beyond 2 levels (ie, array(0 => array(0 => 1, 1 => 2)), but not array(
                // 0 => array(0 => array(), 1 => array())) )
                if ($this->translateColumnNames && is_array(reset($value))) {
                    foreach ($value as $level1Key => $level1Value) {
                        $inner = $name == 'goals' ? Piwik::translate('Goals_GoalX', $level1Key) : $name . ' ' . $level1Key;
                        $columnNameTemplate = '%s (' . $inner . ')';
                        $this->flattenColumnArray($level1Value, $csvRow, $columnNameTemplate);
                    }
                } else {
                    $this->flattenColumnArray($value, $csvRow, $csvName . '_%s');
                }
            } else {
                $csvRow[$csvName] = $value;
            }
        }
        return $csvRow;
    }