php로 뽑은 2차원 배열에서 날짜 기준으로 합산데이터를 뽑고 싶습니다 채택완료
멀티트리플
3년 전
조회 1,821
날짜와 두 상품금액이 담긴 2차원 배열을 만들었습니다.
(게시판1과 다른게시판2 if문을 통해 신규 배열을 만들었습니다.)
print_r($aa) 를 출력하면
</p>
<p>Array (</p>
<p>[0] => Array ( [date] => 2022-03-23 [aa] => 10000 [bb] => 1000 )</p>
<p>[1] => Array ( [date] => 2022-03-24 [aa] => 10000 [bb] => 1000 )</p>
<p>[2] => Array ( [date] => 2022-03-24 [aa] => 10000 [bb] => 1000 )</p>
<p>[3] => Array ( [date] => 2022-03-25 [aa] => 10000 [bb] => 1000 ) </p>
<p>...</p>
<p>)</p>
<p>
위에 같이 결과를 만들었습니다. ( aa와 bb의 값은 예를 들었습니다. )
위의 $aa 뽑아낸 뒤 에 아래와 같이 변형을 하고 싶습니다.
날짜별로 상품들의 합산을 재배열해서 $bb로 만들고 싶습니다.
제가 결과를 내고싶은 값은 아래와 같습니다.
</p>
<p>Array (</p>
<p>[0] => Array ( [date] => 2022-03-23 [aa] => 10000 [bb] => 1000 )</p>
<p>[1] => Array ( [date] => 2022-03-24 [aa] => 20000 [bb] => 2000 )</p>
<p>[2] => Array ( [date] => 2022-03-25 [aa] => 10000 [bb] => 1000 ) </p>
<p>...</p>
<p>)</p>
<p>
날짜별 합산 을 만들고 싶은데 어떻게 짜야할까요?
제가 배열에 좀약하고 이해도가 약해서 부탁드립니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
3년 전
$arr = ~~; //데이터배열
$result = array();
foreach($arr => $row) {
if ($result[$row['date']]) {
$result[$row['date']]['aa'] += $row['aa'];
$result[$row['date']]['bb'] += $row['bb'];
} else {
$result[$row['date']] = array();
$result[$row['date']]['aa'] = $row['aa'];
$result[$row['date']]['bb'] = $row['bb'];
}
}
로그인 후 평가할 수 있습니다
답변에 대한 댓글 4개
�
멀티트리플
3년 전
첫줄빼고 나머지줄 복사해서 붙였더니 에러가 나는지 아무것도 출력되지 않아요
�
폭주죽
3년 전
아 제가 오타났네요 소스를 실행해본게 아니라서 ㅠㅠ
foreach ($arr as $row)
가 맞는거고, 위에 배열 선언하실떄 문법 잘 맞추셔야해요 잠시만요
foreach ($arr as $row)
가 맞는거고, 위에 배열 선언하실떄 문법 잘 맞추셔야해요 잠시만요
�
폭주죽
3년 전
소스를 다시 좀 정리해봤어요 참고하세요
[code]
$arr = array(
array('date' => '2022-03-24', 'a' => 10, 'b' => 20)
, array('date' => '2022-03-24', 'a' => 10, 'b' => 20)
, array('date' => '2022-03-25', 'a' => 111, 'b' => 222)
, array('date' => '2022-03-26', 'a' => 1111, 'b' => 2222)
, array('date' => '2022-03-26', 'a' => 1111, 'b' => 2222)
);
print_r($arr);
$result = array();
foreach($arr as $row) {
if (isset($result[$row['date']])) {
$result[$row['date']]['a'] += $row['a'];
$result[$row['date']]['b'] += $row['b'];
} else {
$result[$row['date']] = array();
$result[$row['date']]['a'] = $row['a'];
$result[$row['date']]['b'] = $row['b'];
}
}
print_r($result);
[/code]
[code]
$arr = array(
array('date' => '2022-03-24', 'a' => 10, 'b' => 20)
, array('date' => '2022-03-24', 'a' => 10, 'b' => 20)
, array('date' => '2022-03-25', 'a' => 111, 'b' => 222)
, array('date' => '2022-03-26', 'a' => 1111, 'b' => 2222)
, array('date' => '2022-03-26', 'a' => 1111, 'b' => 2222)
);
print_r($arr);
$result = array();
foreach($arr as $row) {
if (isset($result[$row['date']])) {
$result[$row['date']]['a'] += $row['a'];
$result[$row['date']]['b'] += $row['b'];
} else {
$result[$row['date']] = array();
$result[$row['date']]['a'] = $row['a'];
$result[$row['date']]['b'] = $row['b'];
}
}
print_r($result);
[/code]
�
멀티트리플
3년 전
아... => as
저도 그냥 놓쳣네요
감사합니다. 잘응용해보겠습니다.
저도 그냥 놓쳣네요
감사합니다. 잘응용해보겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인