가능한 한 쉽게이 문제를 설명하겠습니다.PHP는 2 회의 오픈 타임을 반복하지만 그 사이의 클로즈 타임을 건너 뛰게하려면 어떻게해야합니까?
오전과 오후의 두 세트가 있습니다. 그 사이에 닫힌 시간을 제외하고 매 15 분마다 드롭 다운 값을 표시하고 싶습니다.
나는 6 시간 동안 이렇게 해왔고 제대로 작동하지 않습니다. 정말 간단해야하지만 나는 그것을 볼 수 없다. 다음은 내가 가지고있는 것입니다.
// Fake the time to 11:31
$timenow = strtotime('11:31');
echo '<select name="delivery_time">';
// Start with 1 hour after current time.
$deliverytime = strtotime('+1 hour', $timenow);
// Round to next 15 minutes
$deliverytime = ceil($deliverytime/(15*60)) * (15*60);
$open_am = strtotime('07:00');
$close_am = strtotime('11:00');
$open_pm = strtotime('13:00');
$close_pm = strtotime('20:00');
while($deliverytime <= $close_am && $deliverytime >= $open_am) {
echo '<option value="'. date('H:i', $deliverytime) .'">' . date('H:i', $deliverytime) . '</option>'."\n";
$deliverytime = strtotime('+15 minutes', $deliverytime);
}
echo "</select>";
까다로운 부분이 있습니다. 닫힌 시간 (11:00에서 13:00 사이)을 건너 뛰기 위해 다음과 같이 변경해 보았습니다.
while($deliverytime <= $close_am && $deliverytime >= $open_am && (
$deliverytime <= $close_pm && $deliverytime >= $open_pm
)) {
하지만 작동하지 않았습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 난 그냥 볼 수 없습니다 :(
먼저 7 행에는 선언되지 않은 변수가 있습니다 : $ time_now 대신 $ timenow가 필요합니다. for 루프를 대신 사용해 보셨습니까? For ($ I = 0; $ I <= $ close_am; $ i ++) {if ($ deliverytime> = $ open_am) {// docode}}? – Juan
@Juan 죄송합니다. 코드를 복사 할 때 오타가되었습니다. 이제 루프를 시도 할 것입니다 .. – user1996496
for 루프를 사용해 보시고 더 잘 작동 할 수있는 if 문을 포함 시키십시오. 당신은 나에게 당신의 결과를 말할 수 있습니까 ?? – Juan