물어보기Rhymix

Array
(
    [0] => stdClass Object
        (
            [title] => 야옹이 -> 멍멍이 테스트1
            [content] =>

            [regdate] => 20180419210707
        )

    [1] => stdClass Object
        (
            [title] => 멍멍이 -> 야옹이 테스트2
            [content] =>

            [regdate] => 20180419195711
        )

    [2] => stdClass Object
        (
            [title] => 멍멍이 -> 야옹이 테스트3
            [content] =>

            [regdate] => 20180419183004
        )

    [3] => stdClass Object
        (
            [title] => 야옹이 -> 멍멍이 테스트4
            [content] =>

            [regdate] => 20180419210631
        )

)

 

 

예를들어 위와 같은 형태의 배열이 있다고 가정하였을때

regdate 값을 기준으로 오래된 내용이 위로, 최신의 내용이 아래로 오도록 정렬하려면 어떻게 해야 하나요?

혹 아시는 분은 힌트를 부탁합니다!!

  • profile
    구름이 2018.04.19 22:12:12
    가능합니다.
    regdate 기준으로 정렬가능합니다.
    자세한건 php 배열 정렬로 검색해보시길..
  • profile
    프렌다 2018.04.19 22:17:59
    구름이님 댓글 감사합니다.
    이 질문글을 올리기전에 구글에서 이미 php 배열 정렬 이라는 동일한 키워드로 검색해보았지만
    인덱스를 기준으로 정렬하는 것은 있지만... 인덱스 내부에 들어있는 특정한 값을 기준으로
    정렬하는건 찾을수가 없었네요 ㅠㅠ (몇개 나오긴 했지만... {@} 안에 넣으면 신텍스 오류... ?php 구문 안에 넣으면 오류는 안나지만 적용X)

    좀더 찾아보도록 하겠습니다.
  • profile
    prologos 2018.04.19 22:44:12
    usort 이용 해 보세요.

    usort($array, function($a, $b) {
    return $a->regdate > $b->regdate;
    });
  • profile
    프렌다 2018.04.19 23:02:22
    prologos 님 답변 감사드립니다.

    배열정렬을 검색하니 펑션을 사용하는 것들이 간혹 나오던데...
    xe템플릿 내에서 {@ } 안에 넣으면 에러가 발생하여 사용을 할 수 없습니다 ㅠㅠ

    <?php ?> 안에 넣으면 오류는 없습니다만.. 적용이 안됩니다.
  • profile
    prologos 2018.04.19 23:15:10
    탬플릿 문법에서는 중괄호{} 때문에 오류가 나겠네요 ㅎㅎ
    php문에서 아래처럼 시도 해 보세요. xe에서 사용하는 배열의 이름이 $array라면 php에서는 $__Context->array라고 사용하시면 됩니다.

    <?php
    usort($__Context->array, function($a, $b) {
    return $a->regdate > $b->regdate;
    });
    ?>
  • profile
    프렌다 2018.04.19 23:28:45

    필요한분 참고하시라고 전체소스 올립니다.

    {@
     $sper->member_srl = $logged_info->member_srl;
     $rper->member_srl = $receiver_info->member_srl;
     $rmsg = executeQuery('communication.getSendedMessages', $rper);
     $smsg = executeQuery('communication.getSendedMessages', $sper);
     $tmsg = array_merge($rmsg->data, $smsg->data);
    
    }
    
    <?php
    usort($__Context->tmsg, function($a, $b) {
    return $a->regdate > $b->regdate;
    });
    
    $__Context->final = $__Context->tmsg;
    ?>
    
    <div class="chat">
    <!--@foreach($final as $key1 => $val1)-->
    <div class="rechat">{$val1->title}   {zdate($val1->regdate)}</div>
    <!--@end-->
    </div>

     

    감사합니다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    성공 하였습니다 ㅠㅠㅠㅠㅠ 

     

    사실 쪽지함이 받음/보냄 이 나누어져 있어서 너무 불편하기에...
    카카오톡 대화방 처럼 한화면에서 받음/보냄이 교차되어 나오고
    상대방에게 바로 전송할 수 있도록 수정하고 있었거든요...
    (수신/발신 관련한 get부분 자체가 나누어져 있어서...
    내가 보낸쪽지, 내가 받은쪽지 배열을 하나로 합쳐버렸거든요...)
    PHP한번도 안해봤는데... 여기저기 구글링 해가면서 수정하느라 막히는것 투성이네요
    코어 안건드리고 스킨단에서만 처리하고 있는데 갈길이 멉니다.
    암튼 너무 감사드립니다 :)

서버에 요청 중입니다. 잠시만 기다려 주십시오...