0

こんにちは、次のようにこの関数を使用して、0 1 5、2 3 15、4 18 20 で区切られた文字列コンマのコレクションを配列に変換します。

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

最終結果は次のとおりです。

Array ( [0] => 0 1 5 [1] => 2 3 15 [2] => 4 18 20 )

この配列0 1 5Mon 1 am 5 amと を4 18 20意味するThur 6 pm 8 pmので、最初の桁は平日の残りの部分を表し、2 桁は 24 時間形式の時間を表します。既存の配列をこの形式に出力するにはどうすればよいですか?

Array ( [0] => Mon 1 am 5 am [1] => Tue 3 am 3 pm [2] => Thur 6 pm 8 pm )

ありがとう

4

4 に答える 4

2

フィルター処理されたバージョンを取得するには、array_map を使用します。mktime() を使用して日付を作成し、date() を使用してフォーマットできます。これが解決策になるはずだと思います:

$filtered = array_map(function($incoming) {
    $parts = explode(' ', $incoming);
return
    date('D', mktime(0,0,0,1, $parts[0])) . ' ' .
    date('g a', mktime($parts[1])) . ' ' .
    date('g a', mktime($parts[2]));
}, $openHrs);
于 2013-02-19T03:05:59.063 に答える
0

平日の場合、次のことをお勧めします。

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

foreach ($openHours As &$openHour) {
    $foo = explode(' ',$openHour);
    $openHour=$weekday[$foo].' '. // <-- write yourself a nice function to convert 24h to 12h, maybe there's something like this in PHP already?       
}
于 2013-02-19T03:05:05.337 に答える
0

これを試して:

// This will be used for the week days
$weekdays = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

// Loop through each date
foreach($openHrs as &$temp) {
    // Separate the numbers
    $temp = explode(" ", $temp);

    // Change from a 24 hrs clock to a 12 hrs clock
    $temp[1] = $temp[1] > 12 ? $temp[1] - 12 . 'pm' : $temp[1] . 'am';
    $temp[2] = $temp[2] > 12 ? $temp[2] - 12 . 'pm' : $temp[2] . 'am';

    // Update the element
    $temp = $weekdays[$temp[0]] . ' ' . $temp[1] . ' ' . $temp[2];
}
于 2013-02-19T03:05:15.133 に答える
0

区切り文字として空白を使用して各 Arrayelement を再度分解し、より良い配列構造を実現します。

Array ( [0] => Array(0, 1, 5), [1] => Array(1, 3, 3) [2] => Array(4, 18, 18) )

この構造を持っている場合、おそらくいくつかのアプローチがあります。date() とタイムスタンプを使用した解決策があるかもしれませんが、正直なところ、それについてはわかりません。別の解決策があります。平日で別の配列を定義します。

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

次に、その配列のインデックスとして持っている数値を使用して、正しい曜日を出力できます。少し自作の関数 ala を使用して時間を出力できます。

function twentyFourHourToAmPM($number) {
    if ($number > 12) {
         return ($number - 12)." pm";
    } else {
         return $number." am";
    }
 }

すべてを出力すると、次のように機能するはずです。

foreach ($openHrs as $key => $value) {
    echo $weekdays[$value[0]]." ".twentyFourHourToAmPM($value[1])." - ".twentyFourHourToAmPM($value[2]);
}
于 2013-02-19T03:06:21.287 に答える