테스트 사이트 - 개발 중인 베타 버전입니다

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)
가 맞는거고, 위에 배열 선언하실떄 문법 잘 맞추셔야해요 잠시만요
폭주죽
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]
멀티트리플
3년 전
아... => as
저도 그냥 놓쳣네요
감사합니다. 잘응용해보겠습니다.

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

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

로그인