我似乎有一个问题,了解如何按照自己想要的方式对数组进行排序。
目前我的数组是这样,每个索引代表从星期一开始的一个工作日。
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
)
我要显示今天的开放时间。
谢谢。
答案 0 :(得分:1)
以下逻辑可能与您要完成的工作很吻合:
<?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));
注意:旋转魔术的漂亮单线来自:https://www.php.net/manual/en/ref.array.php#105907
工作demo
答案 1 :(得分:0)
您可以使用PHP date()函数来获取星期几(0 =星期日,6 =星期六)。您可以将当前数组调整为从星期日到星期六运行,或者可以在从数组中获取元素时调整数组元素#。
date(“ w”)将返回星期几。
有关PHP date()函数的完整说明,请参阅此文档...
答案 2 :(得分:0)
这很有趣,只需创造性地使用2 for循环即可
FIRST(Fields!OccurCode.Value, "TTDC_Templates")
结果
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';
}
答案 3 :(得分:0)
如果您的数组始终是星期一至星期日,索引从0到6,则只需将您想要的数组提取到末尾,然后将其添加到剩下的开头即可。星期六是5点,所以将其删除:
$result = array_merge(array_splice($array, 5), $array);