2차원배열 중복 질문드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
2차원배열 중복 질문드립니다.

QA

2차원배열 중복 질문드립니다.

본문

현재 2차원배열안에 중복값이 있어.  중복값의sum을 구하고싶습니다.

예를들어 현재 배열안에는

 

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

    [1] => Array
        (
            [호박사탕] => 1
        )

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

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

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

요렇게 있을경우에 중복의 합을구해서

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

    [1] => Array
        (
            [호박사탕] => 1
        )

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

  
)

요런식으로 나오게 할순없을까요?

for($j=0; $row2 = mysql_fetch_array($result2); $j++)
{

 $aaaa[$j][$row2[it_name]] = $row2[ct_qty]; //이렇게 값넣고있습니다.

}

 

이 질문에 댓글 쓰기 :

답변 2


$arr = [
    ["알사탕" => 1],
    ["호박사탕" => 1],
    ["껌" => 15],
    ["알사탕" => 2],
    ["껌" => 2]
];
array_walk_recursive($arr, function($item, $key) use (&$sum) {
    $sum[$key] = isset($sum[$key]) ? $item + $sum[$key] : $item;
});
print_r($sum);

왕계란 님,
혹시 배열이 아래와 같은 형태일 땐, 아래쪽 코드가 어떤 식으로 바뀌어야 하는지?

$arr = array(
    "알사탕" => 1,
    "호박사탕" => 1,
    "껌" => 15,
    "알사탕" => 2,
    "껌" => 2
);

답변감사드립니다.
하나만더 여쭙겠습니다.. 아래 sinbi님이 댓글로 적어주신부분은 키가 중복이되어 저렇게 배열이 생성이 안되면.
배열명 : $candy
print_r2($candy) 결과
(
    [0] => Array
        (
            [알사탕] => 13
        )

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

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

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

    [4] => Array
        (
            [호박사탕] => 2
        )
)
요런식으로 나온다면,
각 사탕들의 합은 어찌구할수 있을까요.?


array_walk_recursive($candy, function($item, $key) use (&$sum) {
	$sum[$key] = isset($sum[$key]) ? $item + $sum[$key] : $item;
});

$result = [];
foreach($sum as $k => $v) {
	$result[] = [
		$k => $v
	];
}
print_r($result);

위에 질문을 보니 depth가 한 번 더 들어가길 원하시는군요.
이유는 모르겠지만 일단 합을 만든 후에 다시 돌려서 만들어야 하는 것 같네요.

$aaaa = array(
    0=>array('알사탕'=>1),
    1=>array('호박사탕'=>3),
    2=>array('껌'=>15),
    3=>array('알사탕'=>5),
);
$sum_qty_array = array();
foreach ($aaaa as $item){
   foreach ($item as $name=>$qty){
       if(!isset($sum_qty_array[$name])){
           $sum_qty_array[$name] = $qty;
       }else{
           $sum_qty_array[$name] += $qty;
       }
   }
}


$sum_qty_sort_array = array(); // 원하시는 결과는 이 배열에 담깁니다.

foreach ($sum_qty_array as $key=>$val){
    $sum_qty_sort_array[] = array($key=>$val);
}
print_r($sum_qty_sort_array);

 

의식의 흐름대로 코딩해봤어요.

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

회원로그인

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