1

という名前のデータベース テーブルusersには列 がありますtimemarks

フィールドは次のtimemarkようになります.. 11:00:00, 13:45:00, 17:00:00, 18:25:00(タイムマークはユーザーごとに異なります)

私のphpスクリプトは、指定されたタイムマークを持つユーザーをリストする必要があります.

クエリ: SELECT * FROM ('users')(クエリ結果は に返されます$users)

ループ:

  1. ユーザーを反復する
  2. $timemarks_arrを使用してタイムマーク文字列を分割して、各ユーザーの配列を作成しますstr_getcsv
  3. 指定されたタイムマーク値を持つユーザーをエコーする
foreach ($users as $user): 

   $timemarks_arr = str_getcsv($user->timemarks); //split time-marks by comma and create array

    if (in_array("17:00:00", $timemarks_arr)) //users with specified time-mark
    {                               
        echo $entry->username . "<br />";
    }

endforeach;

何らかの理由で 2 人のユーザーしかエコーしませんが、 time-mark にはさらに多くのユーザーがいます17:00:00。誰かが理由を知っていますか?

4

1 に答える 1

4

のような値とは一致しません17:00:00。先頭にスペースがあるためです。

これを試して、文字列の最初と最後からすべての空白を取り除いてください:

$timemarks_arr = array_map( "trim", str_getcsv($user->timemarks)); //split time-marks by comma and create array
于 2012-06-04T02:56:51.253 に答える