2010-03-29 60 views
0

我做这样的事情:函数返回CSV文件:如何去检查它?

$outputFile = getCurrentDBSnapshot($data); 

其中$的数据是,我通过在资源流,基本上是从命令提示符我传递一个文件,并正在打开使用的fopen它与写“W +”的权限,现在getCurrentDBSnapshot将获得表的当前状态并将更新$ data csv文件,所以基本上$ outputFile会更新为数据库表的当前状态,现在我想要var_dump或打印$ outputFile的值来查看数据存在进去。

但是当我做

$this->fout = fopen($outputFile,'r') or die('Cannot open file'); 
$test = fgetcsv($outputFile,5000,";"); 
var_dump($test); 

它给了我一个错误说,它预计参数1是一个字符串类型,并想过去的资源。

我的目标看$ OUTPUTFILE的含有

所以我的问题是,

我怎么能看到$ OUTPUTFILE或含有目前我怎么能看到什么getcurrentDBSnapshot函数返回我 ?

+0

这个问题不清楚吗?有什么东西是错过了,这将是更有用的问题? – Rachel 2010-03-29 17:45:01

回答

0

fegtcsv将文件句柄作为第一个参数,而不是文件名。你需要做的是这样:

$this->fout = fopen($outputFile,'r') or die('Cannot open file'); 
while ($test = fgetcsv($this->fout,5000,";")) 
{ 
    var_dump($test); 
} 

注意fgetcsv仅仅获取文件的单行线,类似与fgets。

另外我不确定你为什么要传递一个分号作为fgetcsv的第三个参数。 CSV代表逗号分隔值;你确定你的文件是以分号分隔的吗?

+0

是的,我的文件是以分号分隔的,'fgetcsv()期望参数1是资源,布尔给定','var_dump($ test)'的值是'NULL' – Rachel 2010-03-29 18:12:41

+0

CSV文件在一些国家以分号分隔如法国) – eli 2012-08-22 15:13:28

0

引述fgetcsv页的手册中,传递给fgetcsv的第一个参数应该是:

有效文件指针由fopen()成功打开的 , popen(),或fsockopen()


在这里,你是路过的第一个参数$outputFile,其中包含你正在试图从中读取数据的文件的名称 - 即一个字符串,而不是一个句柄打开的文件。

考虑您呼叫fopen$this->fout存储其返回值,这可能是你应该传递给fgetcsv变量,就像这样:

$this->fout = fopen($outputFile,'r') or die('Cannot open file'); 
$test = fgetcsv($this->fout,5000,";"); 
var_dump($test); 


一点题外话:fgetcsv只会返回每次调用它时都会有一行的数据 - 这意味着如果您想查看整个文件的内容,则可能必须使用循环。

如果需要,请看示例#1,在the manual page of fgetcsv

+0

fgetcsv()期望参数1是资源,布尔给定和'var_dump($ test)'给出NULL' – Rachel 2010-03-29 18:11:13

+0

如何打开一个流? – Rachel 2010-03-29 18:18:17