0

したがって、users.txt と schedule.txt という名前の 2 つのテキスト ファイルがあります。schedule.txt は次のようになります。

   0           1     2

2013-04-11^12:00|4:00|14:00

    3          4     5     6

2013-07-21^10:00|15:00|18:00|15:00

    7          8

2013-12-11^13:00|14:00

users.txt ファイルは次のようになります。

ジョン・スミス^2|4|6

スターウォーズ^0|1|3|6

ルーク・スカイウォーカー^2|6|7|8

これらの数字はそれぞれ他のファイルのインデックスに対応しています...たとえば、John Smith の時刻は 2013-04-11 の 14:00 (2 から)、15:00 の時刻 (4 から) です。などなど…

さて、HTML を使用してこれらすべてのテーブルを作成していますが、時刻 (例: 12:00) の値を抽出するのに問題があります。

また、私はhtmlとPHPに非常に慣れていないので、簡単に教えてください...ポインターやその他の有用な情報があれば共有してください=)編集を追加しようとすると、間違いなく必要になります(編集時間のためにこれはラジオボタンを使用して)、新しいユーザーを追加します。

ヘルプ/アドバイスをありがとうございました!

これが私のコードです:

<?php
<!DOCTYPE html>
<html>
 <head>
  <title>Scheduler</title>
 </head>
 <body>
<h2>
<center>Select Your Meeting Times</center></h2>
    <table border="1"
    cellpadding="10">
    <tr>
    <th>User</th>
    <th>Action</th>
    <?php 
    //error_reporting(0);
    date_default_timezone_set('America/New_York');
    // used for displaying schedule times 
        $schedule= file('schedule.txt');
        // loop through array and output contents

        foreach($schedule as $s) {
            list($year, $month, $day) = explode('-', $s); 
            $ga = explode("|", $s);
            var_dump($year); 
            //echo $ga[5];


                            $year= intval($year, 10);
            $month= intval($month, 10);
            $day= intval($day, 10); 

            $h = mktime(0, 0, 0, $month, $day,$year);
            $d = date("F dS, Y", $h); //used to get the day of the week 
            $w= date("l", $h); // w now holds the day of the week.

            foreach($schedule as $t)
            {   
                // $split = preg_split('/| /', $t, -1, PREG_SPLIT_NO_EMPTY);



                list($time) = explode("|", $t); 
                list($time1) = explode(" ", $time); 
            //  var_dump($time1); 
            //  $output = trim($time1); 
            //  echo $test; 
                echo "<th>" . $w . "<br>" . $month . "/" . $day . "/" . $year . "</th>\n";


            }




        }


    ?>
    </tr>
    <tr>
     <?php
            $text = file('user.txt');
            // loop through array and output contents
            foreach($text as $user) {
                list($u) = explode('^', $user);
                echo "<tr>" . "<td>" . $u . "</td>" . "</tr>\n";
            }
        ?>
    </tr>
    <tr>
    <th><br></th>
    </tr>
    <tr>
    <th>Total</th>
    </tr>

    </table>


 </body>
</html>
4

3 に答える 3

0

上記の人々は、情報を保存するためのより良い方法についてすでにコメントしていますが、extract() に関する質問に答えるには:

あなたがするとき

list($year, $month, $day) = explode('-', "2013-04-11^12:00|4:00|14:00"); 

ではなく"11^12:00|4:00|14:00"の値を取得します。同様に、あなたがするとき$day"11"

$ga = explode("|", "2013-04-11^12:00|4:00|14:00");

最初の値として取得"2013-04-11^12:00"します。コードの残りの部分から判断すると、これはおそらく意図したとおりではありません。

于 2013-09-13T03:21:22.173 に答える
0

私はあなたのために小さなクラスを書きました。エラーチェックは一切入れていません。初めてのことでまだ少し混乱している^ので、それを含める方法についてコードにコメントを追加しました。また、コードにコメントしていないことに注意してください。理解していただければ幸いです。

class UserTime{
    var $data=array();
    function __construct(){
        $lines = file('test.txt', FILE_IGNORE_NEW_LINES);
        foreach ($lines as $l){
            list($d,$t)=explode('^', $l);
            $this->data[]=$d;
            $t=explode('|', $t);
            // you have to remove the following line if you want to
            // include the first time after ^
            array_shift($t);
            $this->data = array_merge($this->data,$t);
        }
    }
    function getUser($user_string){
        list($user_name,$ix)=explode('^', $user_string);
        $userData['userName']=$user_name;
        $userData['time']=array();
        $idx = explode('|', $ix);
        for($i=0;$i<count($idx);$i++){
            if(isset($this->data[$idx[$i]])){
                $userData['time'][]=$this->data[$idx[$i]];
            }
        }
        return $userData;
    }
}

以下のようにクラスを使用できます

$users = new UserTime();
$udata = $users->getUser('John Smith^2|4|6');
print_r($udata);
$udata = $users->getUser('Star Wars^0|1|3|6');
print_r($udata);

出力は次のとおりです。これを HTML で自分で使用できると思います。

Array
(
    [userName] => John Smith
    [time] => Array
        (
            [0] => 14:00
            [1] => 15:00
            [2] => 15:00
        )

)
于 2013-09-13T04:13:06.783 に答える
0

このようにしないでください。テキスト ファイルを使用する場合 (小さなアプリで問題ありません)、適切なテキスト形式を使用してください。これらすべてのカスタム区切り文字を廃止し、CSV 形式 ( fgetcsv()を使用して行を配列に読み込むことができる) を使用するか、適切なタグを使用してJSON形式を使用し ( json_decode()を使用して展開します)、問題を解決します。抽出時間で蒸発します。

また、日付を抽出するすべてのマラーキーは必要ありません- DateTime::createFromFormat()を調べて、自分の人生を楽にしてください。

于 2013-09-13T03:17:07.103 に答える