배열합계 구하는것좀 조언좀 부탁드립니다.

배열합계 구하는것좀 조언좀 부탁드립니다.

QA

배열합계 구하는것좀 조언좀 부탁드립니다.

본문

배열명 : $candy
현재 candy배열 안에 값은 이렇게 들어가있습니다.

(
    [0] => Array
        (
            [알사탕] => 13
        )

    [1] => Array
        (
            [껌] => 1
        )

    [2] => Array
        (
            [껌] => 2
        )

    [3] => Array
        (
            [알사탕] => 2
        )

    [4] => Array
        (
            [호박사탕] => 2
        )
)

아래 이런식으로
(
    [0] => Array
        (
            [알사탕] => 15
        )

    [1] => Array
        (
            [껌] => 3
        )

    [2] => Array
        (
            [호박사탕] => 2
        )
)
각 사탕들의 합을 구하고싶습니다.

선배님들의 조언좀 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 2

스쿨 답변 그대로 복사&붙여넣기.

- https://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=469020

* '초기화'하지 않으면, [Notice] Undefined index 오류 발생합니다.

 


<?php
$candy = [ // PHP v5.4 미만은 [] → array()
    ['알사탕'=>13],
    ['껌'=>1],
    ['껌'=>2],
    ['알사탕'=>2],
    ['호박사탕'=>2],
];
$temp = []; // 임시 배열
foreach ( $candy as $no=>$row ) {
    $key = key($row); // 알사탕, 껌, 껌, 알사탕, 호박사탕
    if ( !isset($temp[$key]) ) $temp[$key] = 0; // 초기화
    $temp[$key]+= $row[$key]; // 수량 더하기
}


Array
(
    [알사탕] => 15
    [껌] => 3
    [호박사탕] => 2
)

질문에서 원하는 결과처럼 하려면 아래 코드 추가해주면 됩니다.


$candy = [];
foreach ( $temp as $k=>$v ) $candy[] = [$k=>$v];


Array
(
    [0] => Array
        (
            [알사탕] => 15
        )
    [1] => Array
        (
            [껌] => 3
        )
    [2] => Array
        (
            [호박사탕] => 2
        )
)


‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

* 정렬 추가, 참고 링크 추가.
 


<?php
$candy = [ // PHP v5.4 미만은 [] → array()
    ['알사탕'=>13],
    ['껌'=>1],
    ['껌'=>2],
    ['알사탕'=>2],
    ['호박사탕'=>2],
];
$temp = []; // 임시 배열
foreach ( $candy as $no=>$row ) {
    $key = key($row); // 알사탕, 껌, 껌, 알사탕, 호박사탕
    if ( !isset($temp[$key]) ) $temp[$key] = 0; // 초기화
    $temp[$key]+= $row[$key]; // 수량 더하기
}
arsort($temp); // 캔디수 큰 순으로. 작은 순은 asort();
$candy = [];
foreach ( $temp as $k=>$v ) $candy[] = [$k=>$v];


‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

+ foreach()
- https://www.php.net/manual/en/control-structures.foreach.php

+ key()
- https://www.php.net/manual/en/function.key.php
- http://docs.php.net/manual/kr/function.key.php

+ arsort()
- https://www.php.net/manual/en/function.arsort.php
- http://docs.php.net/manual/kr/function.arsort.php

+ asort()
- https://www.php.net/manual/en/function.asort.php
- http://docs.php.net/manual/kr/function.asort.php

답변을 작성하시기 전에 로그인 해주세요.
전체 2,343
QA 내용 검색

회원로그인

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