현재 위치: > 최신 기사 목록> Array_Column을 사용하여 피벗 변환을 구현하십시오

Array_Column을 사용하여 피벗 변환을 구현하십시오

M66 2025-05-11

매일 개발에서는 종종 데이터의 피벗 변환을 수행해야합니다. 피벗 테이블은 종종 데이터를보다 쉽게 ​​분석 할 수 있도록 데이터를 재정렬, 요약, 계산 또는 변환하는 데 사용됩니다. PHP에서는 내장 함수 array_column을 사용하여 특히 2 차원 배열을 처리 할 때 데이터의 원근 전환을 구현할 수 있습니다.

1. 피벗 변환을 이해하십시오

피벗 변환의 주요 목적은 2 차원 배열에서 데이터를 재 배열하여 일반적으로 열의 데이터를 테이블의 열 헤더로 변경하고 원래 행 데이터를 열 데이터로 변환하는 것입니다. 이 변환은 데이터 분석에 매우 적합합니다. 특히 외부 API로부터 복잡한 데이터를 얻을 때 분석 효율성을 효과적으로 향상시킬 수 있습니다.

2. array_column 함수 소개

PHP의 array_column 함수를 사용하면 다차원 배열에서 별도의 열을 추출 할 수 있습니다. 이 기능은 피벗 작업에서 필요한 열을 추출하는 데 매우 적합합니다. 기본 사용량은 다음과 같습니다.

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ 배열 : 입력 다차원 배열.

  • $ column_key : 추출 해야하는 열 이름 또는 열 인덱스.

  • $ index_key : 옵션 매개 변수, 키 이름을 결과 배열로 지정합니다.

3. 예 : Array_Column을 사용하여 피벗을 구현하십시오

다른 영업 사원과 판매를 포함하는 판매 데이터 테이블을 나타내는 2 차원 배열이 있다고 가정합니다.

 $data = [
    ['salesperson' => 'Alice', 'region' => 'North', 'sales' => 1500],
    ['salesperson' => 'Bob', 'region' => 'South', 'sales' => 2000],
    ['salesperson' => 'Alice', 'region' => 'East', 'sales' => 1200],
    ['salesperson' => 'Bob', 'region' => 'West', 'sales' => 1800],
    ['salesperson' => 'Alice', 'region' => 'South', 'sales' => 2500],
];

이 데이터를 영업 담당자가 그룹화하고 각 지역의 판매를 표시하는 테이블로 피벗하려면 Array_Column을 사용하여 해당 열을 추출한 다음 적절한 논리를 통해 데이터 재구성을 완료 할 수 있습니다.

4. 1 단계 : 영업 담당자 및 판매 추출

먼저 Array_Column을 사용하여 모든 영업 회원 ( 영업 사원 ) 및 판매 ( 판매 )를 추출합니다.

 $salespeople = array_column($data, 'salesperson');
$sales = array_column($data, 'sales');

5. 2 단계 : 데이터 재구성

다음으로, 우리는주기를 통해 영업 사원의 판매를 요약 할 수 있습니다.

 $pivotedData = [];
foreach ($data as $row) {
    $salesperson = $row['salesperson'];
    $region = $row['region'];
    $sales = $row['sales'];
    
    // 이 영업 사원이 결과에 없으면,초기화
    if (!isset($pivotedData[$salesperson])) {
        $pivotedData[$salesperson] = [];
    }
    
    // 영업 사원의 기록에 지역별 판매를 추가하십시오
    $pivotedData[$salesperson][$region] = $sales;
}

print_r($pivotedData);

6. 출력 결과

위의 코드를 실행하면 영업 사원과 영역의 데이터 관점을 얻게됩니다.

 Array
(
    [Alice] => Array
        (
            [North] => 1500
            [East] => 1200
            [South] => 2500
        )
    [Bob] => Array
        (
            [South] => 2000
            [West] => 1800
        )
)

7. 3 단계 : 프로세스 URL 교체

일부 시나리오에서는 URL을 처리해야 할 수도 있습니다. URL이 포함 된 일부 필드가 포함 된 다음 배열이 있다고 가정 하자이 URL의 도메인 이름을 m66.net 으로 바꿔야합니다.

 $dataWithUrls = [
    ['name' => 'Alice', 'website' => 'http://www.example.com'],
    ['name' => 'Bob', 'website' => 'http://www.test.com'],
];

foreach ($dataWithUrls as &$row) {
    $url = parse_url($row['website']);
    $row['website'] = str_replace($url['host'], 'm66.net', $row['website']);
}

print_r($dataWithUrls);

출력 결과 :