我正在尝试在标签分隔文档中选择列。 我遇到的问题是我得到这个错误....
注意:未定义的偏移量:在第11行的E:\ xampp \ htdocs \ qrcode \ tab.php中为1 注意:未定义的偏移量:在第12行的E:\ xampp \ htdocs \ qrcode \ tab.php中为2 注意:未定义的偏移量:第13行的E:\ xampp \ htdocs \ qrcode \ tab.php中的3
代码:
$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;
答案 0 :(得分:0)
您的数组键完全错误:
$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
数组中包含那么多列。
答案 1 :(得分:0)
更新了适用于您的数据代码。
我跳过第1行,并确保在添加项目之前列没有超出界限。
$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;
答案 2 :(得分:0)
我建议使用 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");
答案 3 :(得分:0)
非常感谢大家!这是工作代码!像魅力@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;
?>