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개
</p>
<p>$arr = [
["알사탕" => 1],
["호박사탕" => 1],
["껌" => 15],
["알사탕" => 2],
["껌" => 2]
];</p>
<p>array_walk_recursive($arr, function($item, $key) use (&$sum) {
$sum[$key] = isset($sum[$key]) ? $item + $sum[$key] : $item;
});
print_r($sum);</p>
<p>
답변에 대한 댓글 8개
하나만더 여쭙겠습니다.. 아래 sinbi님이 댓글로 적어주신부분은 키가 중복이되어 저렇게 배열이 생성이 안되면.
배열명 : $candy
print_r2($candy) 결과
(
[0] => Array
(
[알사탕] => 13
)
[1] => Array
(
[껌] => 1
)
[2] => Array
(
[껌] => 2
)
[3] => Array
(
[알사탕] => 2
)
[4] => Array
(
[호박사탕] => 2
)
)
요런식으로 나온다면,
각 사탕들의 합은 어찌구할수 있을까요.?
찍어보니, 나중 정의된 것만 나오네요.
아무튼,
array() 함수 형태로 정의된 경우 계산 방법이 궁금합니다.
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);
[/code]
위에 질문을 보니 depth가 한 번 더 들어가길 원하시는군요.
이유는 모르겠지만 일단 합을 만든 후에 다시 돌려서 만들어야 하는 것 같네요.
보통 배열 덧셈은 array_sum()으로 합니다.
$arr = [2, 3, 2, 5, 4];
echo array_sum($arr);
( ^ ________ ^ ) ====b
저도 덕 분에 많은 도움이 되었습니다!
댓글을 작성하려면 로그인이 필요합니다.
$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);
의식의 흐름대로 코딩해봤어요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
혹시 배열이 아래와 같은 형태일 땐, 아래쪽 코드가 어떤 식으로 바뀌어야 하는지?
$arr = array(
"알사탕" => 1,
"호박사탕" => 1,
"껌" => 15,
"알사탕" => 2,
"껌" => 2
);