Я экспортирую данные из массива 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, поэтому проблема не существует, если кто-нибудь подумает.
Хорошо, так что я понял, что есть проблема с областью видимости, она должна выглядеть так:
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;
}
Других решений пока нет …