テキストファイルにいくつかのデータがあります。例:
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 in // $ 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);
}
ファイルから2番目の列だけを1つの配列に取得するにはどうすればよいですか?(私は特定の条件下でのみ値を取得することを注:if($Datum == '02.02.2015' && $Pers_Nr == '17')
)
これはあなたのために働くはずです:
ファイルを配列に読み込み、区切り文字としてfile()
すべての行array_map()
とexplode()
各行をループして;
、2番目のインデックスを返すだけです。
<?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));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加