前提・実現したいこと
お世話になります。
PHP2ヶ月目の初学者です。
CSV(UTF-8 コンマ区切り)で最寄り駅の時刻表を作りました。
5:17,大,
5:39,大,
5:50,宿,急
…
…
23:46,大,
23:56,大,
0:02,大,急
0:08,町,
0:16,大,
0:31,町,
0:48,大,
PHPを使用し、現在時刻以降直近の5件の行だけテーブルに出力したいと考えました。
『5件出力』は半日かかって何とか頑張りました。#もっとスマートな方法があれば合わせてお願いします。
終電間際、日付が変わった後の0:02などが当日のタイムスタンプと認識されてしまうので、これを翌日の0:02としたいと思いますがうまくいきません。
該当のソースコード
<?php $myTime = strtotime ("now"); //$myTime = strtotime("23:30:00"); $file = "sample.csv"; if ( ( $handle = fopen ( $file, "r" ) ) !== FALSE ) { echo "<table>\n"; $j = 0; while ( ( $data = fgetcsv ( $handle, 200, ",", '"' ) ) !== FALSE ) { if (strtotime($data[0]) >= $myTime){ $j++; if ($j > 5 ){ //直近の5件のみ表示 break ; } echo "\t<tr>\n"; $count = count( $data ); for ( $i = 0; $i < $count; $i++ ) { echo "\t\t<td>{$data[$i]}</td>\n"; } echo "\t</tr>\n"; } } echo "</table>\n"; fclose ( $handle ); } ?>
試したこと
if (strtotime ( $data[0] ) < strtotime( "3:00:00" ) ) { //始発より前の時間なら(仮に午前3時)
$data[0] = array_replace($data[0] , date("G:i" , strtotime( $data[0] . " +1 day" ) ) );//翌日に変更(??)
}
array_replace とかで配列を書き換え?と色々試しましたが、書き方がよくわかりません。
お忙しいところ恐縮ですが宜しくお願い致します。
#本当は時刻表っぽく
↓こんな感じにしてみたいところです…。急行なら赤とか。
17|39 43 53
18|00 11
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 01:42
2019/07/12 00:42