我在一个文本文件中有一些数据,例如:
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));