PHP에서 Array_Column 및 Array_reduce 는 두 가지 매우 유용한 배열 처리 기능입니다. 이 두 기능의 조합을 통해 복잡한 데이터 통계 및 처리를 효율적으로 수행 할 수 있습니다. 이 기사는이 두 기능을 결합하여보다 효율적인 배열 작업 및 데이터 처리를 완료하는 방법을 심층적으로 탐색합니다.
Array_Column 함수는 다차원 배열에서 지정된 열을 추출하고 열의 요소를 포함하는 배열을 반환하는 데 사용됩니다. 일반적인 사용법은 여러 연관 배열을 포함하는 큰 배열에서 필드 값을 추출하는 것입니다.
기능 프로토 타입 :
array_column(array $array, mixed $column_key, mixed $index_key = null): array
배열 : 입력 다차원 배열.
column_key : 추출 할 열 이름을 지정합니다 (배열의 키 이름 또는 정수 색인이 될 수 있음).
index_key (선택 사항) : 결과 배열을 반환하는 인덱스 키를 지정합니다. 생략하면 반환 된 배열은 원래 배열의 키를 사용합니다.
array_reduce 함수는 PHP의 고차 어레이 함수로, 어떤 식 으로든 어레이에서 요소를 축적합니다. 일반적으로 배열의 값을 단일 값으로 집계하는 데 사용됩니다.
기능 프로토 타입 :
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
배열 : 입력 배열.
콜백 : 배열의 각 요소에서 어떤 종류의 작업을 수행하는 콜백 함수.
초기 (선택 사항) : 누적 된 초기 값, 기본적으로 null .
콜백 함수의 서명은 일반적으로 다음과 같습니다.
function($carry, $item) {
// 작동 논리
return $carry;
}
$ Carry는 누적 된 값이고 $ 항목은 현재 처리 된 배열 요소입니다.
이 두 기능은 종종 다차원 배열에 복잡한 통계 또는 요약 작업이 필요한 경우에 종종 사용됩니다. 예를 들어, 각 요소가 판매 레코드 인 판매 기록이 포함 된 배열 (날짜, 품목, 판매 금액 등)이 포함 된 배열이 있다고 가정합니다. Array_Column을 통해 판매 금액을 추출한 다음 Array_Reduce를 통해이 금액을 합산 할 수 있습니다.
샘플 데이터 :
$sales = [
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 200],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1500],
['date' => '2025-04-03', 'product' => 'Tablet', 'amount' => 600],
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 250],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1700],
// 더 많은 데이터...
];
먼저 Array_Column을 사용하여 모든 판매 금액을 추출 할 수 있습니다.
$amounts = array_column($sales, 'amount');
다음으로 Array_Reeduce를 사용하여 판매 금액을 합산하십시오.
$totalSales = array_reduce($amounts, function($carry, $item) {
return $carry + $item;
}, 0);
echo "Total Sales: " . $totalSales;
이 예에서 Array_Column은 모든 판매 금액 열을 추출하여 Array_ReDuce는 이러한 금액을 축적하고 마지막으로 총 판매량을 계산합니다.
각 날짜의 총 판매량을 날짜별로 계산하는 것과 같은 더 복잡한 통계가 필요한 경우 Array_Column 과 Array_Reeduce를 결합하면 더 많은 장점이 있습니다. 먼저 Array_Column을 사용하여 날짜 및 판매 금액 열을 추출한 다음 Array_Reeduce를 통해 총 판매량을 날짜별로 집계 할 수 있습니다.
날짜 별 판매 예 :
// 날짜 및 금액 열 추출
$dates = array_column($sales, 'date');
$amounts = array_column($sales, 'amount');
// 날짜와 금액을 병합하십시오
$salesData = array_map(function($date, $amount) {
return ['date' => $date, 'amount' => $amount];
}, $dates, $amounts);
// 날짜 별 판매
$dailySales = array_reduce($salesData, function($carry, $item) {
$carry[$item['date']] = isset($carry[$item['date']]) ? $carry[$item['date']] + $item['amount'] : $item['amount'];
return $carry;
}, []);
echo "Daily Sales:\n";
print_r($dailySales);
이 코드는 날짜별로 집계 된 판매를 출력합니다. 예를 들어:
Daily Sales:
Array
(
[2025-04-01] => 450
[2025-04-02] => 3200
[2025-04-03] => 600
)
배열에 배열을 처리 할 때 URL 데이터가 포함 된 경우 Array_Column을 사용하여 URL을 추출하여 필요에 따라 교체 할 수 있습니다. 다음은 URL의 도메인 이름을 M66.net 으로 바꾸는 방법의 예입니다.
다음 데이터가 있다고 가정합니다.
$urls = [
['id' => 1, 'url' => 'https://example.com/page1'],
['id' => 2, 'url' => 'https://anotherexample.com/page2'],
['id' => 3, 'url' => 'https://example.com/page3'],
];
Array_Column을 사용하여 URL을 추출하고 도메인 이름을 대체 할 수 있습니다.