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.
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.
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.
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.
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');
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);
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
)
)
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: