我正在尝试选择制表符分隔文档中的列。我遇到的问题是我收到此错误....
注意:未定义的偏移量:1 在 E:''xampp''htdocs''qrcode''tab.php 在第 11
行 注意:未定义的偏移量:2 在 E:''xampp''htdocs''qrcode''tab.php 在第 12
行 注意:未定义的偏移量:3 在 E:''xampp''htdocs''qrcode''tab.php 第 13 行
法典:
$file = "t_rac.txt";// Your Temp Uploaded file
$handle = fopen($file, "r"); // Make all conditions to avoid errors
$read = file_get_contents($file); //read
$lines = explode("'n", $read);//get
$i= 0;//initialize
$o=1;
foreach($lines as $key => $value){
$cols[$i] = explode("'t", $value);
$list=($cols[$o++][1]);
$list.=($cols[$o++][6]);
$list.=($cols[$o++][7]);
$i++;
}
echo $list;
更新了数据的代码 这对你有用。
我跳过第一行,并确保在添加项目之前该列没有越界。
$lines = explode("'n", $read); //get
$i = 0;//initialize
$list = "";
foreach($lines as $value)
{
if($i != 0)
{
$cols[$i] = explode("'t", $value);
if(isset($cols[$i][1]))
$list.=($cols[$i][1]);
if(isset($cols[$i][6]))
$list.=($cols[$i][6]);
if(isset($cols[$i][7]))
$list.=($cols[$i][7]);
$list.= "<br />";
}
$i++;
}
echo $list;
你的数组键是完全错误的:
$list=($cols[$o++][1]);
^^^^
每次使用它时,$o
都会发生变化。因此,在循环的第一次迭代中,您正在执行以下操作:
$list=($cols[1][1]);
$list.=($cols[2][6]);
$list.=($cols[3][7]);
请注意,$o
现在是 4...在第二次迭代中,您正在执行
$list=($cols[4][1]);
$list.=($cols[5][6]);
$list.=($cols[6][7]);
$o
在迭代结束时7
,等等......如果你有 100 行要处理,$o
最终将被301
,并且你的 $cols
数组中没有那么多列。
我可以建议使用 fgetcsv PHP 函数来解析字符分隔的文件。 无需使用爆炸。
编辑 - 我刚刚阅读了您的其他评论,现在明白了您的意思。 更新。
编辑 - 所以你需要从同一行获取第 1、6 和 7 列。 还添加了对第一行的检查。
function getMeTheString($file) {
$str = "";
if (($handle = fopen($file, "r")) === FALSE) return;
$line = 0;
while (($cols = fgetcsv($handle, 1000, "'t")) !== FALSE) {
if ($line > 0) { // Ignore 1st line
$str .= $cols[1];
$str .= $cols[6];
$str .= $cols[7];
}
$line++;
}
return $str;
}
echo getMeTheString("t_rac.txt");
非常感谢大家!这是工作代码!像魅力一样工作@Demodave谢谢!!
<?php
$file = "t_rac.txt";// Your Temp Uploaded file
$handle = fopen($file, "r"); // Make all conditions to avoid errors
$read = file_get_contents($file); //read
$lines = explode("'n", $read); //get
$i = 0;//initialize
$list = "";
foreach($lines as $value)
{
if($i != 0)
{
$cols[$i] = explode("'t", $value);
if(isset($cols[$i][2]))
$list.=($cols[$i][2]);
$list.= "--";
if(isset($cols[$i][3]))
$list.=($cols[$i][3]);
$list.= "--";
if(isset($cols[$i][4]))
$list.=($cols[$i][4]);
$list.= "--";
if(isset($cols[$i][6]))
$list.=($cols[$i][6]);
$list.= "--";
if(isset($cols[$i][7]))
$list.=($cols[$i][7]);
$list.= "--";
if(isset($cols[$i][23]))
$list.=($cols[$i][23]);
$list.= "<br />";
}
$i++;
}
echo $list;
?>