PHP以二进制格式返回结果

时间:2015-03-02 23:04:37

标签: php binary xls

我将数据从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;
}

当我这样做,然后回显toExcel($ somearray);它会创建破碎的xls。

知道为什么以及如何解决这个问题?我有其他函数用于xls文件的开始和结束,所以如果有人想的话就不存在问题。

1 个答案:

答案 0 :(得分:1)

好的,所以我发现,范围存在问题,它应该如下:

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;

}