PHP возвращает результат в двоичном формате

Я экспортирую данные из массива php в файл xls.
Все отлично работает, если я просто записываю их в файл с помощью echo:

function toExcel($arrayOfData) {
$data = null;
$rowCounter = 0;

if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
echo xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $data) {
echo xlsWriteLabel($rowCounter, $colCounter, $data);;
$colCounter++;
}
$rowCounter++;
}
}
}
}

но я хочу просто вернуть двоичный код в одну переменную, например:

function toExcel($arrayOfData) {
$data = null;
$rowCounter = 0;

if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
$data .= xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $data) {
$data .= xlsWriteLabel($rowCounter, $colCounter, $data);
$colCounter++;
}
$rowCounter++;
}
}
}
return $data;
}

Когда я делаю это, а затем делаю echo toExcel ($ somearray); это создаст xls, который сломан.

Есть идеи почему и как это исправить? У меня есть другие функции для начала и конца файла xls, поэтому проблема не существует, если кто-нибудь подумает.

0

Решение

Хорошо, так что я понял, что есть проблема с областью видимости, она должна выглядеть так:

function toExcel($arrayOfData) {
$data = xlsBOF();
$rowCounter = 0;

if(is_array($arrayOfData) === true) {
foreach($arrayOfData as $key=>$value) {
$colCounter = 0;
if($key == 0) {
foreach(array_keys($arrayOfData[0]) as $hKey => $header) {
$data .= xlsWriteLabel(0, $hKey, $header);
}
$rowCounter++;
}
if(is_array($value) === true) {
foreach($value as $val) {
$data .= xlsWriteLabel($rowCounter, $colCounter, $val);
$colCounter++;
}
$rowCounter++;
}
}
}
$data .= xlsEOF();
return $data;

}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]