制表符分隔txt文件PHP从数组中选择

时间:2014-12-15 21:41:20

标签: php

我正在尝试在标签分隔文档中选择列。 我遇到的问题是我得到这个错误....

  

注意:未定义的偏移量:在第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; 

4 个答案:

答案 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]);
在迭代结束时,

$o7等等...如果要处理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;
?>