>백엔드 개발 >PHP 튜토리얼 >평면 연관 배열에서 공유 키 값을 병합하고 합산하는 방법은 무엇입니까?

평면 연관 배열에서 공유 키 값을 병합하고 합산하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 19:12:03718검색

How to Merge and Sum Values of Shared Keys in Flat Associative Arrays?

평면 연관 배열의 값 병합 및 합계

문제:

플랫 연관 배열이 여러 개 있습니다. 연관 배열을 병합하고 기존 값을 덮어쓰지 않고 일치하는 키와 연관된 값을 함께 추가하려고 합니다. 표준 array_merge() 함수와 간단한 추가 작업은 원하는 동작을 제공하지 않습니다.

해결책:

연관 배열을 병합하고 값을 합하려면 공유 키의 경우 다음 접근 방식 중 하나를 사용할 수 있습니다.

1. 결합된 키에 대한 반복:

<code class="php">$sums = array();
foreach (array_keys($a1 + $a2) as $key) {
    $sums[$key] = (isset($a1[$key]) ? $a1[$key] : 0) + (isset($a2[$key]) ? $a2[$key] : 0);
}</code>

이 접근 방식은 결합된 배열의 키를 반복하고 각 키의 값을 $sums 배열에 누적합니다.

2. 매핑 사용:

<code class="php">$keys = array_fill_keys(array_keys($a1 + $a2), 0);
$sums = array_map(function ($a1, $a2) { return $a1 + $a2; }, array_merge($keys, $a1), array_merge($keys, $a2));</code>

여기서 입력 배열의 모든 고유 키로 배열을 만든 다음 array_map()을 사용하여 배열.

3. 도우미 함수:

이 작업을 자주 수행해야 하는 경우 도우미 함수를 만들 수 있습니다.

<code class="php">function array_sum_identical_keys() {
    $arrays = func_get_args();
    $keys = array_keys(array_reduce($arrays, function ($keys, $arr) { return $keys + $arr; }, array()));
    $sums = array();

    foreach ($keys as $key) {
        $sums[$key] = array_reduce($arrays, function ($sum, $arr) use ($key) { return $sum + @$arr[$key]; });
    }
    return $sums;
}</code>

이 함수는 원하는 수의 배열을 허용하고 공유 값을 합산합니다. 키를 새 배열로 만듭니다.

이러한 접근 방식 중 하나를 사용하면 평면 연관 배열의 공유 키 값을 병합하고 합하여 원하는 동작을 얻을 수 있습니다.

위 내용은 평면 연관 배열에서 공유 키 값을 병합하고 합산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.