用PHP排序开放时间
我有一个阵列,开放时间如下:用PHP排序开放时间,php,arrays,sorting,Php,Arrays,Sorting,我有一个阵列,开放时间如下: array:7 [ "mon" => array [ "open" => null "close" => null ] "tue" => array [ "open" => null "close" => null ] "wed" => array [ "open" => "09:00" "close" => "20:00" ] "thu
array:7 [
"mon" => array [
"open" => null
"close" => null
]
"tue" => array [
"open" => null
"close" => null
]
"wed" => array [
"open" => "09:00"
"close" => "20:00"
]
"thu" => array [
"open" => null
"close" => null
]
"fri" => array [
"open" => "14:00"
"close" => "17:00"
]
"sat" => array [
"open" => "12:00"
"close" => "15:00"
]
"sun" => array [
"open" => "12:00"
"close" => "15:00"
]
]
array [
array [
"mon" => array [
"open" => null
"close" => null
]
"tue" => array [
"open" => null
"close" => null
]
]
array [
"wed" => array [
"open" => "09:00"
"close" => "20:00"
]
]
array [
"thu" => array [
"open" => null
"close" => null
]
]
array [
"fri" => array [
"open" => "14:00"
"close" => "17:00"
]
]
array [
"sat" => array [
"open" => "12:00"
"close" => "15:00"
]
"sun" => array [
"open" => "12:00"
"close" => "15:00"
]
]
]
我想创建一个这样的结构:
array:7 [
"mon" => array [
"open" => null
"close" => null
]
"tue" => array [
"open" => null
"close" => null
]
"wed" => array [
"open" => "09:00"
"close" => "20:00"
]
"thu" => array [
"open" => null
"close" => null
]
"fri" => array [
"open" => "14:00"
"close" => "17:00"
]
"sat" => array [
"open" => "12:00"
"close" => "15:00"
]
"sun" => array [
"open" => "12:00"
"close" => "15:00"
]
]
array [
array [
"mon" => array [
"open" => null
"close" => null
]
"tue" => array [
"open" => null
"close" => null
]
]
array [
"wed" => array [
"open" => "09:00"
"close" => "20:00"
]
]
array [
"thu" => array [
"open" => null
"close" => null
]
]
array [
"fri" => array [
"open" => "14:00"
"close" => "17:00"
]
]
array [
"sat" => array [
"open" => "12:00"
"close" => "15:00"
]
"sun" => array [
"open" => "12:00"
"close" => "15:00"
]
]
]
其中具有相同开放时间的日期被分组在一起,只要这些日期是连续的。否则一天就应该结束了
我一直在努力用PHP实现这一点,这就是我目前所得到的
$hours = [];
$previousDay = null;
foreach ($days as $key => $day)
{
if ($day === $previousDay)
{
$hours[] = array($key => $day);
}
else
{
$hours[] = array($key => $day);
}
$previousDay = $day;
}
我被困在如何将具有相同开放时间的日子组合在一个阵列中。下面是如何进行的
$result = array();
$previous = null;
$idx = -1;
foreach ($days as $key => $day){
if($day !== $previous){
$idx++;
}
$result[$idx][$key] = $day;
$previous = $day;
}