如何使用zend框架导入CSV文件?我应该使用zend_file_transfer还是有任何我必须研究的特殊类?另外,如果我使用zend_file_transfer是否有任何特殊的CSV验证器?
答案 0 :(得分:13)
您不必使用任何zend库来导入csv文件,您只需使用本机php函数,看看fgetcsv
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
答案 1 :(得分:8)
您也可以使用SplFileObject
来阅读CSV文件。
从php手册:
<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>
答案 2 :(得分:1)
目前无法使用Zend Framework执行此操作。怎么可以肯定?
例如, Zend_Translate 支持使用CSV文件进行翻译,但如果您检查相应适配器的源代码( Zend_Translate_Adapter_Csv ),则可以验证它是否使用 fgetcsv ,而不是特定的Zend类。此外,此CSV适配器还附带以下警告:
注意:请注意Csv适配器 你的Csv文件的问题 编码与区域设置不同 设置你的环境。这是 由于PHP本身的Bug将会 在PHP 6.0之前不能修复 (http://bugs.php.net/bug.php?id=38471)。 所以你应该知道Csv 由PHP限制的适配器不是 区域设置意识。
与 fgetcsv 功能的问题有关。
答案 3 :(得分:0)
这是一个读取csv文件并返回包含前两列数据值的项目数组的函数。
此函数可以读取first_name的文件,例如last_name。
function processFile ($filename) {
$rtn = array();
if (($handle = fopen($filename, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$item = array();
$item[] = $data[0];
$item[] = $data[1];
$rtn[] = $item;
}
}
return $rtn;
}