날짜가 같은 값을 가져오려면?

날짜가 같은 값을 가져오려면?

QA

날짜가 같은 값을 가져오려면?

본문

bb1 배열은 아래와 같습니다. 

$bb1 = [

    ['2022-05-16', 123],

    ['2022-05-02', 233],

    ['2022-05-02', 333],

    ['2022-05-02', 433],

    ['2022-05-02', 533],

    ['2022-05-02', 633],

    ['2022-05-02', 733],

    ['2022-05-02', 833],

    ['2022-05-02', 933],

    ['2022-05-02', 191],

    ['2022-05-03', 192],

    ['2022-05-03', 193],

    ['2022-05-02', 194],

    ['2022-05-03', 195],

    ['2022-05-02', 196],

    ['2022-05-02', 197]

];

 

결과는 아래처럼 나오게 하고 싶습니다. 

2022-05-16 = 123

2022-05-02 = 233, 333, 433, 533, 633, 733, 833, 933, 191, 194, 196, 197

2022-05-03 = 192, 193, 195

 

이렇게 나오게 하고 싶습니다

어떻게 해야할까요?

이 질문에 댓글 쓰기 :

답변 2


$bb1 = [
    ['2022-05-16', 123],
    ['2022-05-02', 233],
    ['2022-05-02', 333],
    ['2022-05-02', 433],
    ['2022-05-02', 533],
    ['2022-05-02', 633],
    ['2022-05-02', 733],
    ['2022-05-02', 833],
    ['2022-05-02', 933],
    ['2022-05-02', 191],
    ['2022-05-03', 192],
    ['2022-05-03', 193],
    ['2022-05-02', 194],
    ['2022-05-03', 195],
    ['2022-05-02', 196],
    ['2022-05-02', 197]
];
$arr = array();
foreach ($bb1 as $key => $val) {
    $arr[$val[0]][] = $val[1];
}
foreach ($arr as $key => $val) {
    $val_implode = implode(',', $val);
    echo $key." = ".$val_implode."<br>";
}
 

$bb1 = [
['2022-04-26', 187, 0, 8942],
['2022-04-21', 187, 0, 8800],
['2022-04-21', 187, 0, 8801],
['2022-04-21', 0, 22, 8798],
['2022-04-30', 0, 81, 4852],
['2022-04-30', 0, 81, 4851],
['2022-04-03', 0, 13, 2145],
['2022-04-29', 0, 14, 2136]
];

결과는
2022-04-26, 187, 0 = 8942
2022-04-21, 187, 0 = 8800, 8801
2022-04-21, 0, 22 = 87998
2022-04-30', 0, 81 = 4852, 4851
2022-04-03', 0, 1 = 2145
2022-04-29', 0, 14 = 2136
이렇게 나오려면 어떻게 해야할까요?

배열이 DB에서 가져온 것이라면

group by를 활용해 보세요.

group by 어떻게 사용해야 할까요?
날짜가 나오는 항목은 계산된 항목이라 테이블의 항목이 존재하지 않습니다.
첫번째 배열을 예로 든다면 ['2022-04-26', 187, 0, 8942]
되어있는 배열은 첫번째 항목은 계산된 값, 두번재, 세번째, 네번째값은 db 에 있는 값들입니다.
첫번째 항목과 두번째, 세번째 항목을 group by로 하면 될것 같은데
말씀드렸듯이 첫번째항목은 계산 값이라 group by 를 할수 없다고 생각해서 배열로 만들어서 처리하려고 했던 것입니다.
혹시 계산된 값을 사용하여 db에서 group by를 할수 있는 방법이 있을까요?
제가 사용하는 db는 mysql(maria db)입니다.

첫번째항목은 종료예정일로 항목명은 expt_date이고 두번째항목은 단과번호 lecture_no 세번째항목은 패키지번호 package_no이고 마지막은 테이블의 일련번호로 uid이고 자동으로 증가하며 일치하는것이 없는항목입니다
첫번째항목만제외하면 모든항목은 하나의 테이블에서 가져올수 있습니다

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

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