„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie transponiere ich eine spaltenförmige Datenstruktur in PHP in ein zeilenbasiertes Format?

Wie transponiere ich eine spaltenförmige Datenstruktur in PHP in ein zeilenbasiertes Format?

Veröffentlicht am 08.11.2024
Durchsuche:327

How to Transpose a Columnar Data Structure into Row-based Format in PHP?

Mehrdimensionale Spaltendaten in eine zeilenbasierte Struktur umordnen

Gegeben ein assoziatives Array mit spaltenorientierten Daten, besteht die Aufgabe darin, es zu transponieren ein mehrdimensionales Array bestehend aus Zeilen. Die Daten im ursprünglichen Array sind nach Spalten angeordnet und das Ziel besteht darin, die Werte aus derselben Spalte in Zeilen zusammenzuführen.

Original Array:

$where = [
    'id' => [
        12,
        13,
        14
    ],
    'date' => [
        '1999-06-12',
        '2000-03-21',
        '2006-09-31'
    ]
];

Gewünschte Ausgabe:

$comb = [
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
];

Lösung:

Eine effektive Möglichkeit, diese Datenumstrukturierung zu erreichen, besteht darin, die Werte jeder Spalte mithilfe einer Schleife zu durchlaufen und sie für jede Spalte in einem Array zu kombinieren Reihe. Hier ist ein Beispiel:

$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = [$id, $where['date'][$key]];
}

array_column() Ansatz:

Eine elegante Alternative zur schleifenbasierten Lösung ist die Verwendung der Funktion array_column(), die eine bestimmte Spalte aus einer mehrdimensionalen Spalte extrahiert array.

$result = [];

foreach ($where['id'] as $key => $id) {
    $result[] = array_column($where, $key);
}

Die Funktion array_column() gibt die angegebene Spalte als Array zurück, das dann mit den Werten aus der entsprechenden Zeile kombiniert werden kann.

Ausgabe:

Beide Lösungen erzeugen die gewünschte Ausgabe:

[
    [12, '1999-06-12'],
    [13, '2000-03-21'],
    [14, '2006-09-31']
]
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3