이 3문장을 php로 표현하려면 어떻게 하나요?

이 3문장을 php로 표현하려면 어떻게 하나요?

QA

이 3문장을 php로 표현하려면 어떻게 하나요?

본문

2015-08-13 (오늘)을 기준점 숫자 3000 이라 지정해 이 숫자를 변수 $day에 할당합니다.

이 변수 $day는 매일 1씩 증가합니다.

K라는 반복문은 26부터 시작해 $day까지 반복적으로 실행해 역순으로 정렬합니다.

 

 

 

세 번째 줄의 26부터 시작해 $day​까지 반복적으로 실행한다 표현은 아래처럼 하는 걸로 압니다.

 

for ($cnt=26; $cnt<=$day; $cnt++) { 

    K라는 반복문

}

 

 

 

혹, 위 핑크색 굵은색 문장을 PHP로 표현하는 방법 좀 부탁드립니다. 

 

 

이 질문에 댓글 쓰기 :

답변 2

2015-08-13이라는 날짜는 지정되어야 할 것같네요.

 

14일이 되었을때도 오늘이 들어가면 $day의 날짜가 변경되지 않겠죠.

 


$startDate = new DateTime("2015-08-13"); // 지정된날짜
$nowDate = date("Y-m-d"); // 오늘날짜
 
$dateDiff = date_diff($startDate, $nowDate); // 지정된날짜와 오늘날짜의 차이
 
echo $dateDiff->days + 3000; // 위에서 구한 차이에 기준점숫자 3천을 더해서 출력

 

답변 고맙습니다.

 근데, 아래처럼 적어줬는데, 결과값이 3000으로 찍혀 나오네요. 3012가 나와야 하는데...
아무래도 마지막 줄이 잘못된 것 같은데, php 까막눈이라 잘 모르겠네요.

<?
                    $startDate = new DateTime("2015-08-01"); // 지정된날짜
$nowDate = date("Y-m-d"); // 오늘날짜
 
$dateDiff = date_diff($startDate, $nowDate); // 지정된날짜와 오늘날짜의 차이
 
echo $dateDiff->days + 3000 ; // 위에서 구한 차이에 기준점숫자 3천을 더해서 출력
                    ?>



그리고, 역순으로 정렬하는 방법도 아시면 부탁드려요.
숫자가 몇천단위이다 보니...가장 최근 게 가장 먼저 찍혔으면 싶거든요..



아래처럼 적어줘봤는데, 아무 것도 안 뜨네요.

<?php
$startDate = new DateTime("2015-08-01"); // 지정된날짜
$nowDate = date("Y-m-d"); // 오늘날짜 
$dateDiff = date_diff($startDate, $nowDate); // 지정된날짜와 오늘날짜의 차이 
echo $dateDiff ; // 위에서 구한 차이에 기준점숫자 3천을 더해서 출력
?>

아래처럼 해주니까, 출력되네요. 두 번째 줄이 잘못된 거였네요.

$startDate = new DateTime("2015-08-01"); // 지정된날짜
$nowDate = new DateTime(date("Y-m-d")); // 오늘날짜
$dateDiff = date_diff($startDate, $nowDate); // 지정된날짜와 오늘날짜의 차이 
echo $dateDiff->days + 3000 ; // 위에서 구한 차이에 기준점숫자 3천을 더해서 출력

음 쉬우면서도 어렵네요 

일단 기준점을 정해야겠지요 

오늘이 기준점이던지 어제가 기준점이던지  

일단은 기준점을 2015-01-01로 했다치면

$standardDay = "2015-01-01"; 

함수를 하나 만들어보겠습니다

function getDateNum($d) {

    $_timestamp = array(86400, 3600, 60, 1);

    $d = strtotime($d);

    $minusDay = "0";
    foreach($_timestamp as $key => $value) {
        if($d <= (time() - $value) && empty($minusDay) && $key == 0) {
            $minusDay = (int)((time() - $d)/$_timestamp[$key]);
        }
    }

    Return $minusDay; 

}

 

echo getDateNum($standDay);

이렇게 하면 오늘부터 1월1일이 며칠 전인지 나오게 됩니다  

이렇게 나온 숫자를 3000에 더해주시면 됩니다 

역으로 하실거면

for($cnt = $day; $cnt >= 26; $cnt--) {

 

머 이런식으로 하면 삼천몇부터해서 26까지 반복하겠지요 

 

 

 

 

 

 

 

 

 

 

 

답변 고맙습니다. 근데, 소스가 굉장히 복잡하고 어렵네요.^^;
또,
$standardDay 변수와 function 과의 관계를 모르겠습니다.
마지막엔 $standDay 변수가 나오구.....

--------------------------------------------------------------
$standardDay = "2015-01-01";
함수를 하나 만들어보겠습니다
function getDateNum($d) {
    $_timestamp = array(86400, 3600, 60, 1);

    $d = strtotime($d);

    $minusDay = "0";
    foreach($_timestamp as $key => $value) {
        if($d <= (time() - $value) && empty($minusDay) && $key == 0) {
            $minusDay = (int)((time() - $d)/$_timestamp[$key]);
        }
    }

    Return $minusDay;
}
 
echo getDateNum($standDay);
--------------------------------------------------------------


드래곤된다 님 소스가 직관적이라, 드래곤된다 님 소스를 사용하고자 하는데,
드래곤된다 님 소스도 어디가 좀 문제가 있는 것 같네요.

답변을 작성하시기 전에 로그인 해주세요.
전체 12,369
QA 내용 검색

회원로그인

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