요일별 다른 변수 적용 채택완료
</p>
<p>$ch = curl_init();
$url = '<a href="http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo';" target="_blank" rel="noopener noreferrer">http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo';</a> /*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);</p>
<p>
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);</p>
<p>
$display = []; //</p>
<p> $xml = simplexml_load_string($response);</p>
<p> 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.'';</p>
<p>
$display[] = array(
'date' => $key
, 'name' => $val
, 'isholi' => $isholi
);
}</p>
<p>$today = date('Y-m-d');
$ho = 0; // 기본값은 공휴일 아님</p>
<p>foreach ($display as $holiday) {
if ($holiday['date'] == $today) {
$ho = $holiday['isholi']; // 공휴일이면 Y, 아니면 0
break;
}
}</p>
<p> </p>
<p>
이렇게 공휴일 정보를 불러와서
오늘이 공휴일이면 $ho = Y
공휴일이 아니면 $ho = 0
이렇게 들어가게되며 테스트 해보면
정상적으로 $ho 값이 들어옵니다
</p>
<p>$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); // </p>
<p>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;
}</p>
<p> if ($dow == 0 || $dow == 6) { // 주말
$in_time = $data75;
}
}
위와 같이 했더니 평일에도 $in_time 변수에
$data75 값이 들어가고 있습니다.
먼가 꼬인거 같은데.. 잘 모르겠씁니다 ㅠㅠ
$in_time 변수에
토요일, 일요일, 공휴일에는 $data75 값이
평일에는 $data71, $data72, $data73 값이 일주일마다
돌아가면서 값이 들어가게 하려고 하는데요
머가 문제인지 도움 부탁드립니다
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
7개월 전
뭐가 문제인지는 모르겠습니다만 다음 코드를 시도해 보았으면 합니다.
</p>
<p><?php
// 오늘 날짜와 공휴일 정보 불러오기 (기존 코드는 유지)
$today = date('Y-m-d');
$dow = date('w', strtotime($today)); // 0(일) ~ 6(토)</p>
<p> </p>
<p>// 기준일 설정 (2025-04-21)
$base_date = '2025-04-21'; </p>
<p> </p>
<p>// 기준일로부터 일수 차이 계산
$days_diff = (strtotime($today) - strtotime($base_date)) / 86400;</p>
<p> </p>
<p>// 기존 로직과 일관성 유지를 위한 주차 계산 방식 유지
$week = floor(($dow + $days_diff) / 7);
$rotation = ($week - 1) % 3; // 3주 순환 (0, 1, 2)</p>
<p> </p>
<p>// 명확한 우선순위로 조건 검사
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;
}
}</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
7개월 전
</p>
<p>$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부터 시작)</p>
<p>// 공휴일 또는 주말 체크
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;
}
}</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
채택
답변대기
답변대기
답변대기
답변대기
채택
채택
답변대기
답변대기
답변대기
채택