채택완료

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

2022-02-25 (금) 17:01:40 2,108

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개 / 댓글 5개

채택된 답변
+20 포인트
Copy
$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>";
}

답변에 대한 댓글 1개

$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
이렇게 나오려면 어떻게 해야할까요?
2022-02-25 (금) 20:14:25

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

group by를 활용해 보세요.

답변에 대한 댓글 4개

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이고 자동으로 증가하며 일치하는것이 없는항목입니다
첫번째항목만제외하면 모든항목은 하나의 테이블에서 가져올수 있습니다
ssh나 phpmyadmin 등으로
select 해서
실제 데이터를 보여 주시면 좋겠습니다.

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