如何从分号分隔的文本文件中获取第二列?



我在一个文本文件中有一些数据,例如:

02.02.2015;17:03;86;Normal;----;2
02.02.2015;17:07;3;Normal;----;2
02.02.2015;17:07;61;Normal;----;1
02.02.2015;18:04;66;Normal;----;2
02.02.2015;19:26;37;Normal;----;2
02.02.2015;21:17;57;Normal;----;1
03.02.2015;07:17;54;Normal;----;2
03.02.2015;07:17;48;Normal;----;2
03.02.2015;07:17;38;Normal;----;2
03.02.2015;07:17;4;Normal;----;2
03.02.2015;07:17;80;Normal;----;2
03.02.2015;07:17;66;Normal;----;2
03.02.2015;07:17;97;Normal;----;2

我已经展示了这个记录。我只需要时间行,但我想在数组中选择时间,如:

07:40 as $string[0];
07:42 as $string[1];
07:43 as $string[1];

我试着:

$string = array();
foreach($Zeit as $key => $time) {
    $string[] = $time; 
}
  echo  $string[0];

但代码显示错误如下:

为foreach()提供无效参数
注意:未定义的offset: 0在//$string

这是我当前的代码:

$file = "0215.txt";
if (($handle = fopen($file, "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
        $Datum = $data[0]; // Date
        $Zeit = $data[1]; // Time
        $Pers_Nr = $data[2]; // Person number
        $Art = $data[3]; // Non-use
        $Eingabe = $data[4]; // Non-use
        $Terminal = $data[5]; // Non-use
        if($Datum == '02.02.2015' && $Pers_Nr == '17'){
             echo $Zeit.'<br>';
            /*  $string = array();
                foreach($Zeit as $key => $time){
                    $string[] = $time; 
                }
                echo  $string[0];    */
        }
    }
    fclose($handle);
}

我如何才能从我的文件中抓取第二列到一个数组?(注意,我只想在某些条件下获取值:if($Datum == '02.02.2015' && $Pers_Nr == '17'))

这应该可以为您工作:

只需将文件读取到具有file()的数组中,然后循环使用array_map()explode()的所有行,每行使用;作为分隔符,并返回第二个索引。

<?php
    $lines = file("test.txt");
    $times = array_map(function($v){
        return explode(";", $v)[1];
    }, $lines);
    print_r($times);
?>
输出:

Array
(
    [0] => 17:03
    [1] => 17:07
    [2] => 17:07
    //...
    [10] => 07:17
    [11] => 07:17
    [12] => 07:17
)
编辑:

如果您想要附加条件,当您想要获取时间时,当不需要时,只需将其添加到array_map()的匿名函数中,并为那些您不想要的时间返回空字符串,以便您可以使用array_filter()过滤出这些值:

$times = array_filter(array_map(function($v){
    $data = explode(";", $v);
    if(strcmp($data[0], "02.02.2015") === 0 && $data[2] == "3")
        return $data[1];
    return "";
}, $lines));

相关内容

  • 没有找到相关文章

最新更新