채택완료

날짜 Sort 관련 질문 드립니다.

2018-03-20 (화) 11:55:42 2,726

안녕하세요 

현재 랜덤으로 날짜를 뽑아서 출력을 시키는 부분을 하고 있습니다.

랜덤으로 뽑아서 출력까지는 문제없이 출력이 되는데

출력되는 부분을 정렬하고 싶습니다.

도움좀 구할 수 있을까요?

감사합니다.

현재 출력값은 아래와 같습니다.

//출력값

2018-03-05
2018-03-12
2018-03-19
2018-03-05
2018-03-08
2018-03-11
2018-03-14
2018-03-17
2018-03-20
2018-03-05
2018-03-06
2018-03-07
2018-03-08
2018-03-09
2018-03-10
2018-03-11
2018-03-12

Copy
<?php

$today = date("Y-m-d", time()-3600);

$s_date = '2018-03-01';

$e_date = ($today);

$arr = range(1, 7);

shuffle($arr);

foreach ($arr as $number) {

    //echo $number.'<br>';

for ($t=strtotime($s_date.'MON'),$e=strtotime($e_date);$t<=$e;$t+=86400*$number) // 지정 날짜 이후 요일 구해, 랜덤 날짜더해가며 날짜 출력

{//fdlf2304

$aaa = date('Y-m-d',$t).'<br>';

echo ($aaa);

}

}

?>



 

<?php

$today = date("Y-m-d", time()-3600);

$s_date = '2018-03-01';

$e_date = ($today);

$arr = range(1, 7);

shuffle($arr);

foreach ($arr as $number) {

for ($t=strtotime($s_date.'MON'),$e=strtotime($e_date);$t<=$e;$t+=86400*$number) // 지정 날짜 이후 요일 구해, 랜덤 날짜더해가며 날짜 출력

{

$aaa = date('Y-m-d',$t).'<br>';

echo ($aaa);

}

}

 

//$aaa 출력 즉, 날짜 출력을 Sort(정렬)하고 싶습니다. 어느 방법으로 해야 할까요?

?>
|

답변 3개 / 댓글 5개

채택된 답변
+20 포인트

원하시는 답인지 모르겠습니다. 저도 초보자라..

Copy
<?php
$darray = array(); //배열 생성

$today = date("Y-m-d", time()-3600);
$s_date = '2018-03-01';
$e_date = ($today);
$arr = range(1, 7);
shuffle($arr);
foreach ($arr as $number) {
    //echo $number.'<br>';
    for ($t=strtotime($s_date.'MON'),$e=strtotime($e_date);$t<=$e;$t+=86400*$number) // 지정 날짜 이후 요일 구해, 랜덤 날짜더해가며 날짜 출력
        {//fdlf2304
            $aaa = date('Y-m-d',$t).'<br>';
            array_push($darray, $aaa); //배열에 추가
        }
}

//배열 정렬
rsort($darray);

//배열 출력
foreach ($darray as $value) {
    echo $value;
}
?>

답변에 대한 댓글 1개

감사합니다 원하던거에여~~
정말 감사합니다. ~~
2018-03-20 (화) 13:06:53

아래와 같이 해보시겠어요?^^

Copy
<?php

$date_arr =  array(); //생성된 일시를 담을 배열 선언
$today = date("Y-m-d", time()-3600);
$s_date = '2018-03-01';
$e_date = ($today);
$arr = range(1, 7);
shuffle($arr);
foreach ($arr as $number) {
for ($t=strtotime($s_date.'MON'),$e=strtotime($e_date);$t<=$e;$t+=86400*$number) // 지정 날짜 이후 요일 구해, 랜덤 날짜더해가며 날짜 출력
{

array_push($date_arr, $t); // 생성된 일시를 배열에 모두 삽입만...
//$aaa = date('Y-m-d',$t).'<br>';
//echo ($aaa);
}
}
 

rsort($date_arr);// 위에서 삽입 완료된 시간 데이터들을 정렬(rsort는 내림차순 sort는 오름차순)

 

//$aaa 출력 즉, 날짜 출력을 Sort(정렬)하고 싶습니다. 어느 방법으로 해야 할까요?
foreach ($date_arr as $key => $val) {
    echo date('Y-m-d',$val)."<br>"; // 정렬된 배열을 순차 출력
}

?>

답변에 대한 댓글 1개

감사합니다.
이거때문에 몇일을 고생했는지 ㅜ 정말 감사드립니다.~

배열에 다 넣고, sort() 쓰시면 될것 같아요.

http://php.net/manual/en/function.sort.php

답변에 대한 댓글 3개

내림차순은 rsort()
답변 감사합니다.

배열에 $aaa 넣고 출력을 했는데 마찬가지로 Sort가 안되어서 나오네요 ㅜ 정녕 불가능한 코드일까요..?
점심 먹고 오는동안 밑에 다른분들이 친절히 소스를 남겨주셨네요^^

답변을 작성하려면 로그인이 필요합니다.