我将使用以下函数将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 5
表示Mon 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 )
由于
答案 0 :(得分: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);
答案 1 :(得分: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?
}
答案 2 :(得分: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];
}
答案 3 :(得分:0)
我会用空格作为Delimiter再次爆炸每个Arrayelement,这样你就有了更好的数组结构:
Array ( [0] => Array(0, 1, 5), [1] => Array(1, 3, 3) [2] => Array(4, 18, 18) )
如果你有这种结构,可能有几种方法。可能有一个date()和timestamps的解决方案,但老实说我不确定。另一种解决方案是。使用工作日定义另一个数组。
$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]);
}