Php 周一到周日的开放时间,从今天开始排序,而不是周一
我似乎遇到了一个问题,即理解如何按照我想要的方式对数组进行排序 目前我的数组是这样的,每个索引表示从周一开始的一个工作日Php 周一到周日的开放时间,从今天开始排序,而不是周一,php,arrays,date,Php,Arrays,Date,我似乎遇到了一个问题,即理解如何按照我想要的方式对数组进行排序 目前我的数组是这样的,每个索引表示从周一开始的一个工作日 Array ( [0] => 08:00-18:00 // monday [1] => 08:00-18:00 // tuesday [2] => 08:00-18:00 // wednesday [3] => 08:00-18:00 // thursday [4] => 08:00-18:00 // fr
Array
(
[0] => 08:00-18:00 // monday
[1] => 08:00-18:00 // tuesday
[2] => 08:00-18:00 // wednesday
[3] => 08:00-18:00 // thursday
[4] => 08:00-18:00 // friday
[5] => 10:00-14:00 // saturday
[6] => 10:00-14:00 // sunday
)
假设今天是星期六,我需要阵列看起来像这样
Array
(
[0] => 10:00-14:00 // saturday
[1] => 10:00-14:00 // sunday
[2] => 08:00-18:00 // monday
[3] => 08:00-18:00 // tuesday
[4] => 08:00-18:00 // wednesday
[5] => 08:00-18:00 // thursday
[6] => 08:00-18:00 // friday
)
我想展示一下今天的营业时间
谢谢。您可以使用PHP日期函数获取一周中的当前日期0=周日,6=周六。您可以将当前阵列调整为从周日到周六运行,也可以在从阵列中获取元素时调整阵列元素 datew将返回一周中的某一天 有关PHP日期函数的完整说明,请参阅此文档
这很有趣,有点创造性地使用2 for循环就可以了
function baseOnDay($day)
{
$open = ['08:00-18:00', '08:00-18:00', '08:00-18:00', '08:00-18:00',
'08:00-18:00', '10:00-14:00', '10:00-14:00'
];
$days = ['monday','tuesday','wednesday','thursday',
'friday', 'saturday', 'sunday'
];
$day = strtolower($day);
if (!in_array($day, $days)) {
return false; // passed a silly param
}
$newOpen = [];
$start = array_search($day, $days);
for ($i=$start; $i<count($open); $i++){
$newOpen[] = $open[$i];
}
for ($i=0; $i<$start; $i++){
$newOpen[] = $open[$i];
}
return $newOpen;
}
if ( ($openTimes = baseOnDay('saturday')) !== false ){
print_r($openTimes);
} else {
echo 'Bad Parameter';
}
以下逻辑可能与您试图实现的目标相符:
<?php
$arr = ["08:00-18:00", "08:00-18:00", "08:00-18:00", "08:00-18:00", "08:00-18:00", "10:00-14:00", "10:00-14:00",
];
// rework $arr - give it days as keys
$dow = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
foreach ($arr as $key => $value) {
$arr[$dow[$key]] = $value;
unset($arr[$key]);
}
// rotate array
$day = 'saturday'; // start array with saturday
$shift = array_search($day, $dow);
$arr = array_merge(array_slice($arr, $shift, NULL, true), array_slice($arr, 0, $shift, true));
注:具有旋转魔力的漂亮单衬套来自:
工作如果你的数组总是从星期一到星期天,索引从0到6,那么只需提取你想要结束的数组,并将其添加到剩余数组的开头。星期六是5,所以要把它去掉,直到最后:
$result = array_merge(array_splice($array, 5), $array);
听起来好像他想展示开放时间,从今天开始,一直向前。如果在星期日到星期六创建该数组,则可以使用datew自动返回该数组,而无需任何输入。如果希望使函数能够返回不同的集合,则可以使用与datew函数相同的相关性将输入更改为数值。这样,用户就可以传入datew值或不同的开始日期。你放弃了吗?
$result = array_merge(array_splice($array, 5), $array);