我在这里问了一个关于合并商店营业时间相似的日子的问题
Combine days where opening hours are similar
现在我需要一些帮助来做相反的事情:获取包含组合日期的字符串并将它们拆分为单独的日期,然后将它们按一天的顺序存储在一个数组中(首先是星期一,最后是星期日)。
例如,这里有一组需要转换的字符串(完全相同的格式):
Mon-Fri 11 am - 7:30 pm
Sat 11 am - 6 pm
两个字符串需要组合在一起并转换成这个数组:
array[0] = "11am - 7:30pm"
array[1] = "11am - 7:30pm"
array[2] = "11am - 7:30pm"
array[3] = "11am - 7:30pm"
array[4] = "11am - 7:30pm"
array[5] = "11am - 6pm"
array[6] = "" // Blank value if the day Sunday is not in the set of strings that needs conversion
// ideally it should be an associative array, ie. array['mon'] = "11am - 7:30pm"
顺便说一句,我正在使用 Codeigniter PHP 框架和 jQuery。
更新:
我现在必须拆分这串包含逗号的文本!
Mon 9 pm - 1 am
Tue-Wed, Sun 7:30 pm - 1 am
Thu-Sat 7:30 pm - 2 am
结果数组:
Array
(
[Mon] => 9 pm - 1 am
[Tue] =>
[Wed] =>
[Thu] => 7:30 pm - 2 am
[Fri] => 7:30 pm - 2 am
[Sat] => 7:30 pm - 2 am
[Sun] =>
)
看来我必须将 Tue-Wed
与 Sun
分开,从
Tue-Wed, Sun 7:30 pm - 1 am
到
Tue-Wed 7:30 pm - 1 am
Sun 7:30 pm - 1 am
@Khattam:这段时间:
Mon 9 pm - 1 am
Tue-Wed, Sun 7:30 pm - 1 am
Thu-Sat 7:30 pm - 2 am
给出:
Array
(
[Mon] => 9 pm - 1 am
[Tue] => 7:30 pm - 1 am
[Wed] => 7:30 pm - 1 am
[Thu] => 7:30 pm - 2 am
[Fri] => 7:30 pm - 2 am
[Sat] => 7:30 pm - 2 am
[Sun] =>
[
] =>
)
最佳答案
您还可以使用类似于以下代码的 Controller 操作:
<?php
$days = array(
'Mon',
'Tue',
'Wed',
'Thu',
'Fri',
'Sat',
'Sun'
);
$combined = "Tue-Wed, Sun 7:30 pm - 1 am";
$combined = explode("\n",$combined);
foreach($combined as &$c){
$commaPosition = strpos($c,', ');
if($commaPosition!==false){
array_push($combined,substr($c,$commaPosition+2));
$spacePosition = strpos($c,' ',$commaPosition+2);
$c = substr($c,0,$commaPosition).substr($c,$spacePosition);
}
}
$splitArray = array();
foreach($days as $d){
$splitArray[$d]='';
}
foreach($combined as $c){
$daysRange = explode(' ',$c);
$daysRange = $daysRange[0];
if(strpos($daysRange,'-')===false){
$splitArray[$daysRange] = substr($c,strlen($daysRange)+1);
}
else{
$temp = explode('-',$daysRange);
$dayStart = $temp[0];
$dayStartIndex = array_search($dayStart,$days);
$dayEnd = $temp[1];
$dayEndIndex = array_search($dayEnd,$days);
for($i=$dayStartIndex;$i<=$dayEndIndex;$i++){
$splitArray[$days[$i]] = substr($c,strlen($daysRange)+1);
}
}
}
echo json_encode($splitArray);
然后使用 $.getJSON() 获取数据。
关于php - 将组合字符串拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513791/