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


Tab delimited txt file PHP selecting from array

我正在尝试选择制表符分隔文档中的列。我遇到的问题是我收到此错误....

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