【发布时间】:2016-02-12 11:59:57
【问题描述】:
我的 php 脚本中有一个我不明白的问题。我知道关于这个问题有几个问题,但没有一个适合我的问题。
我实际上有一个输入文件,由名为testfile.txt 的制表符分隔。
使用这个 txt 文件,我创建了一个名为 result.txt 的新文件,其中我在第 0 列和第 7 列中获取 testfile 的内容。
当我执行我的 php 脚本时,我得到了这个错误:
注意:未定义的偏移量:7
我不明白的是,我的result.txt 是用我的testfile.txt 的第 0 列和第 7 列中包含的数据很好地创建的。如果我这样做:
echo $dataFromTestFile[7];
我在第 7 列中有输出内容。
所以我真的不明白为什么我有这个通知以及如何删除它。
这是我的 php 脚本:
<?php
if (false !== ($ih = fopen('/opt/lampp/htdocs/ngs/tmp/testfile.txt', 'r'))) {
$oh = fopen('/opt/lampp/htdocs/ngs/tmp/result.txt', 'w');
while (false !== ($dataFromTestFile = fgetcsv($ih,0,"\t"))) {
// this is where I build my new row
$outputData = array($dataFromTestFile[0], $dataFromTestFile[7]);
fputcsv($oh, $outputData);
//echo $dataFromTestFile[7];
}
fclose($ih);
fclose($oh);
}
?>
testfile.txt的样本数据:
Input Errors AccNo Genesymbol Variant Reference Coding Descr. Coding
aaa ddd fdfd dfdf fefefd ref1 fdfdfd fdfdf dfdfde
【问题讨论】:
-
var_dump($dataFromTestFile)在此通知之前的行上。您很可能会看到 一个特定的行(或两个或三个)实际上并没有 7 列,无论出于何种原因。 -
我想,
array($dataFromTestFile[0], $dataFromTestFile[6]); -
您可以检查
array_key_exists(7, $dataFromTestFile)是否为假,如果它为假,则使用一些默认值(即0)而不是$dataFromTestFile[7],或者不将行写入输出。 -
如果您不包含来自 testfile.txt 的一些示例数据,人们如何帮助您?