요일별 다른 변수 적용

요일별 다른 변수 적용

QA

요일별 다른 변수 적용

본문


$ch = curl_init();
$url = 'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo'; /*URL*/
$ss = date('Y');
$ss1 = date("m");
$queryParams = '?' . urlencode('serviceKey') . '=XOF2kmoeLs09B60ccCpdjBDu1aTUM9RQRyLfgJPxV3Z0TPmpnj1NtbwTssTQxLVHMqo3suOmDb8b%2BDat9%2FihPw%3D%3D'; 
$queryParams .= '&' . urlencode('solYear') . '=' . urlencode($ss); 
$queryParams .= '&' . urlencode('solMonth') . '=' . urlencode($ss1);

curl_setopt($ch, CURLOPT_URL, $url . $queryParams);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($ch);
curl_close($ch);

$display = []; //
 $xml = simplexml_load_string($response);
            foreach ($xml->body->items->item as $item) {
                $key = substr($item->locdate,0,4).'-'.substr($item->locdate,4,2).'-'.substr($item->locdate,6,2);
                $val = $item->dateName.'';
                $isholi = $item->isHoliday.'';

                $display[] = array(
                    'date' => $key
                    , 'name' => $val
                    , 'isholi' => $isholi
                );
            }
$today = date('Y-m-d');
$ho = 0; // 기본값은 공휴일 아님
foreach ($display as $holiday) {
    if ($holiday['date'] == $today) {
        $ho = $holiday['isholi']; // 공휴일이면 Y, 아니면 0
        break;
    }
}
 

이렇게 공휴일 정보를 불러와서

오늘이 공휴일이면  $ho = Y

공휴일이 아니면     $ho = 0

이렇게 들어가게되며 테스트 해보면

정상적으로 $ho  값이 들어옵니다

 


$today = date('Y-m-d');
$dow = date('w', strtotime($today)); 
$base_date = '2025-04-21'; 
$term = (strtotime($today) - strtotime($base_date)) / 86400; 
$week = floor(($dow + $term) / 7); // 
if ($ho == 'Y') { // 공휴일
    $in_time = $data75;
} else { 
    switch (($week - 1) % 3) {
        case 0:
            $in_time = $data71;
            break;
        case 1:
            $in_time = $data72;
            break;
        case 2:
            $in_time = $data73;
            break;
    }
    if ($dow == 0 || $dow == 6) { // 주말
        $in_time = $data75;
    }
}

위와 같이 했더니 평일에도 $in_time  변수에

$data75 값이 들어가고 있습니다.

먼가 꼬인거 같은데.. 잘 모르겠씁니다 ㅠㅠ

 

$in_time  변수에

토요일, 일요일, 공휴일에는 $data75 값이

평일에는 $data71, $data72, $data73 값이 일주일마다 

돌아가면서 값이 들어가게 하려고 하는데요

 

머가 문제인지 도움 부탁드립니다
 

이 질문에 댓글 쓰기 :

답변 2

뭐가 문제인지는 모르겠습니다만 다음 코드를 시도해 보았으면 합니다.


<?php
// 오늘 날짜와 공휴일 정보 불러오기 (기존 코드는 유지)
$today = date('Y-m-d');
$dow = date('w', strtotime($today)); // 0(일) ~ 6(토)
 
// 기준일 설정 (2025-04-21)
$base_date = '2025-04-21'; 
 
// 기준일로부터 일수 차이 계산
$days_diff = (strtotime($today) - strtotime($base_date)) / 86400;
 
// 기존 로직과 일관성 유지를 위한 주차 계산 방식 유지
$week = floor(($dow + $days_diff) / 7);
$rotation = ($week - 1) % 3; // 3주 순환 (0, 1, 2)
 
// 명확한 우선순위로 조건 검사
if ($ho == 'Y') { 
    // 1. 공휴일인 경우 (평일/주말 상관없이)
    $in_time = $data75;
} else if ($dow == 0 || $dow == 6) { 
    // 2. 공휴일이 아닌 주말(토/일)인 경우
    $in_time = $data75;
} else { 
    // 3. 평일이면서 공휴일이 아닌 경우 - 3주 순환 패턴 적용
    switch ($rotation) {
        case 0:
            $in_time = $data71;
            break;
        case 1:
            $in_time = $data72;
            break;
        case 2:
            $in_time = $data73;
            break;
    }
}

 

$today = date('Y-m-d');
$dow = date('w', strtotime($today)); // 0 (일) ~ 6 (토)
$base_date = '2025-04-21'; // 기준일 (월요일)
$term = (strtotime($today) - strtotime($base_date)) / 86400; // 날짜 차이 (일 단위)
$week = floor($term / 7); // 주차 계산 (0부터 시작)
// 공휴일 또는 주말 체크
if ($ho == 'Y' || $dow == 0 || $dow == 6) { // 공휴일이거나 주말
    $in_time = $data75;
} else { // 평일
    switch ($week % 3) { // 0,1,2 주기로 반복
        case 0:
            $in_time = $data71;
            break;
        case 1:
            $in_time = $data72;
            break;
        case 2:
            $in_time = $data73;
            break;
    }
}
답변을 작성하시기 전에 로그인 해주세요.
전체 15,825
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT