現在の位置: ホーム> 最新記事一覧> 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
  • $ 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);

出力結果: