평면 연관 배열의 값 병합 및 합계
문제:
플랫 연관 배열이 여러 개 있습니다. 연관 배열을 병합하고 기존 값을 덮어쓰지 않고 일치하는 키와 연관된 값을 함께 추가하려고 합니다. 표준 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!