PHP以二进制格式返回结果


PHP returning result in binary format

我正在将数据从php数组导出到xls文件。如果我只是用这样的回声将它们写入文件,一切都会很好:

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;
}

当我这样做,然后做回显到Excel($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;
}