我在文本文件中有一些数据,例如:
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()提供的参数无效
中的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')
)
答案 0 :(得分:1)
这应该适合你:
只需将您的文件读入包含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));