Php fgetcsv循环后没有发生任何事件。试图从amazon mws api的选项卡分隔报告中保存数据
如果我回显Php fgetcsv循环后没有发生任何事件。试图从amazon mws api的选项卡分隔报告中保存数据,php,fgetcsv,fileparsing,Php,Fgetcsv,Fileparsing,如果我回显$count它工作正常(显示正确的计数),即使我转储键(注释行),它也会按预期回显,但循环结束后不会发生任何事情。大约9154排 下面的这些行不起作用,脚本执行停止,没有任何明显的错误 while ($keys = fgetcsv($fp, 0, "\t")) { if ($c == 0) { $headers = $keys; } else { $rows[] = $keys;
$count
它工作正常(显示正确的计数),即使我转储键(注释行),它也会按预期回显,但循环结束后不会发生任何事情。大约9154排
下面的这些行不起作用,脚本执行停止,没有任何明显的错误
while ($keys = fgetcsv($fp, 0, "\t")) {
if ($c == 0) {
$headers = $keys;
} else {
$rows[] = $keys;
//var_dump($keys);
}
$c ++;
}
fclose($fp);
echo count($rows);
在PHP手册中尝试:
fclose($fp);
echo count($rows);
另外,请确保您的输入csv有一个干净的文件结尾。尝试PHP手册中的方法:
fclose($fp);
echo count($rows);
此外,请确保您的输入csv有一个干净的文件结尾。尝试此操作并告诉我们发生了什么:
while( ( $keys = fgetcsv( $fp, 0, "\t" ) ) !== FALSE ) {
试试这个,告诉我们发生了什么:
while( ( $keys = fgetcsv( $fp, 0, "\t" ) ) !== FALSE ) {
在
\t
$data=stream\u get\u contents($request->getReport())周围需要双引号;我认为它和eof问题,尝试了第三方解析器类,具有相同的行为,所以我假设它是eof问题。添加eof的最佳方式是什么!==FALSE成功了,我在不知道自己的选择的情况下战斗!thanks@RashidShafique没问题,变量将布尔值(true/false)存储为0或1,因此请确保在声明/分配变量的条件中使用严格的比较。在\t
$data=stream\u get\u contents($request->getReport())周围需要双引号;我认为它和eof问题,尝试了第三方解析器类,具有相同的行为,所以我假设它是eof问题。添加eof的最佳方式是什么!==FALSE成功了,我在不知道自己的选择的情况下战斗!thanks@RashidShafique没问题,变量将布尔值(true/false)存储为0或1,因此请确保在声明/分配变量的条件中使用严格的比较。我尝试过这种方法,但它不会在fgetcsv循环之外执行,因为msw api以流式方式返回数据,它被捕获在$data var中,我使用$fp=fopen('php://memory","r+";;fwrite($fp,$x);倒带($fp);很公平。一种技术含量很低的方法是将CSV内容复制并粘贴到一个新文件中,减去最后一个可见字符。然后重新键入该字符并保存…我尝试过了,但它在fgetcsv循环之外没有执行,考虑到它的eof问题,因为msw api以流式方式返回数据,它在$data var中捕获,我使用$fp=fopen('s)将其写入文件php://memory","r+";;fwrite($fp,$x);倒带($fp);很公平。一种技术含量很低的方法是将CSV内容复制并粘贴到一个新文件中,减去最后一个可见字符。然后重新键入该字符并保存。。。