-1

MySQL で特定のビジネスの営業時間と平日を節約できるコードがあります。データが MySQL から取得されると、出力は次のようになります。

Array ( [open_hours] => 0 10 0,1 10 0,2 10 0,3 10 0,4 10 0,5 10 0,6 10 0 )

0 10 0は単に を意味Mon 10am 12am し、このような場合は を0 15 18意味しMon 3pm 6pmます。私はすでに次のコードでこれを解決しているので、これは問題ではありません:

$openHrs = explode(",", $openHrs['open_hours']);

        $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
        $res      = array();
        foreach($openHrs as &$temp) {

            $temp = explode(" ", $temp);

            $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am';
            $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am';
            $res[]   = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2];
        }

では、今日が月曜日である場合に Monday の出力結果を表示するだけでよいように、より高度なコードを作成するにはどうすればよいでしょうか? 0 10 0またははどちらMon 10am 12amですか?助けてくれてありがとう

4

4 に答える 4

2

Uはこのコードでこの問題を解決できます

     for($i=0;$i<=6;$i++) 
     {
     if($res[$i]==date('w')) //get today's week number
           {
                echo $res[$i]." ".$temp[1]." ".$temp[2];              
            } 
     }

また

     for($i=0;$i<=6;$i++) 
     {
     if($res[$i]==date('D')) // get today's weekday
           {
                echo $res[$i]." ".$temp[1]." ".$temp[2];              
            } 
     }
于 2013-03-06T05:17:46.067 に答える
1

open_hours今日の平日で除外したい場合は、以下のコードで実行できます。

$openHrs = explode(",", $openHrs['open_hours']);

    $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
    $res      = array();

    $todayWeekDay = date('D'); // get today's weekday
    $todayWeekNum = array_search($todayWeekDay, $weekdays); // get number for today's weekday

    foreach($openHrs as &$temp) {

        $temp = explode(" ", $temp);

        $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am';
        $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am';
        // only add the item where the weekday is equal to today's
        if ($temp[0] == $todayWeekNum) {
             $res[]   = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2];
        }
    }
于 2013-03-06T05:15:10.443 に答える
0

難しい質問のように聞こえますが、これを試す価値があるかどうかを確認してください。

$open_hours = array(Mon 10 0,Tue 10 0,Wed 10 0,Thu 10 0,Fri 10 0,Sat 10 0,Sun 10 0 );
$today = date('D');
$associate_array_key = array_keys($open_hours, $today);
$openHrs = explode(" ", $open_hours[$associate_array_key]);
foreach($openHrs as &$temp) {
  $temp[0]; 
  $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am';
  $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am';
}

これは私が考えることができる概念にすぎません。確かに、コードに必要な操作がいくつかある可能性があります。

于 2013-03-06T05:33:29.480 に答える
0
    $i; // the weekday; comes as input

    $openHrs = explode(",", $openHrs['open_hours']);

    $weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
    $res      = array();
    $temp = explode(" ", $openHrs[$i]);

    $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am';
    $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am';
    $res   = $weekdays[$temp[0]] . ' ' . $temp[1] . ' - ' . $temp[2];
于 2013-03-06T05:22:51.213 に答える