Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Array_Column, um eine Pivot -Konvertierung zu implementieren

Verwenden Sie Array_Column, um eine Pivot -Konvertierung zu implementieren

M66 2025-05-11

In der täglichen Entwicklung müssen wir häufig eine Drehumwandlung von Daten durchführen. Pivot -Tabellen werden häufig verwendet, um Daten neu zu ordnen, zusammenzufassen, zu berechnen oder zu transformieren, um die Analyse zu vereinfachen. In PHP können wir die integrierte Funktion Array_Column verwenden, um die Perspektivenumwandlung von Daten zu implementieren, insbesondere im Umgang mit zweidimensionalen Arrays.

1. Verstehen Sie die Pivot -Transformation

Der Hauptzweck der Pivot-Konvertierung besteht darin, die Daten von einem zweidimensionalen Array neu zu ordnen, wobei die Daten einer Spalte normalerweise in einen Spaltenheader einer Tabelle angezeigt und die ursprünglichen Zeilendaten in Spaltendaten konvertiert werden. Diese Transformation eignet sich sehr für die Analyse von Daten, insbesondere wenn Sie komplexe Daten von externen APIs erhalten, was die Effizienz der Analyse effektiv verbessern kann.

2. Einführung in die Funktion array_column

Mit PHPs Funktion von Array_Column können Sie eine separate Spalte aus einem mehrdimensionalen Array extrahieren. Diese Funktion ist sehr geeignet, um die erforderlichen Spalten in Drehvorgängen zu extrahieren. Die grundlegende Verwendung ist wie folgt:

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ Array : Das multidimensionale Eingangsarray.

  • $ column_key : Der Spaltenname oder der Spaltenindex, der extrahiert werden muss.

  • $ INDEX_KEY : Optionaler Parameter, Angabe des Schlüsselnamens als Ergebnisarray.

3. Beispiel: Verwenden Sie Array_Column , um Pivot zu implementieren

Angenommen, wir haben ein zweidimensionales Array, das eine Verkaufsdatentabelle mit unterschiedlichen Verkäufern und deren Umsatz darstellt:

 $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],
];

Wenn wir diese Daten in eine von Vertriebsmitarbeitern gruppierte Tabelle eintauchen und in jeder Region Verkäufe anzeigen, können wir Array_Column verwenden, um die entsprechenden Spalten zu extrahieren und die Datenreorganisation durch geeignete Logik zu vervollständigen.

4. Schritt 1: Auszugsverkäufer und Verkäufe extrahieren

Zunächst verwenden wir Array_Column , um alle Verkäufer ( Verkäufer ) und ihre Verkäufe ( Verkäufe ) zu extrahieren:

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

5. Schritt 2: Umstrukturieren Sie die Daten neu

Als nächstes können wir Verkäufe durch Verkäufe durch einen Zyklus zusammenfassen:

 $pivotedData = [];
foreach ($data as $row) {
    $salesperson = $row['salesperson'];
    $region = $row['region'];
    $sales = $row['sales'];
    
    // Wenn dieser Verkäufer nicht in den Ergebnissen ist,Initialisieren
    if (!isset($pivotedData[$salesperson])) {
        $pivotedData[$salesperson] = [];
    }
    
    // Fügen Sie Verkäufe nach Region zum Rekord des Verkäufers hinzu
    $pivotedData[$salesperson][$region] = $sales;
}

print_r($pivotedData);

6. Ausgangsergebnis

Nachdem Sie den obigen Code ausgeführt haben, erhalten Sie eine Datenperspektive nach Verkäufer und Gebiet:

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

7. Schritt 3: URL -Ersatz verarbeiten

In einigen Szenarien müssen wir möglicherweise URLs verarbeiten. Angenommen, wir haben das folgende Array mit einigen Feldern mit URLs. Wir müssen die Domainnamen dieser URLs durch M66.NET ersetzen:

 $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);

Ausgangsergebnis: