Heim  >  Artikel  >  Backend-Entwicklung  >  So transponieren Sie ein zweidimensionales Objektarray in PHP

So transponieren Sie ein zweidimensionales Objektarray in PHP

PHPz
PHPzOriginal
2023-04-19 14:11:36486Durchsuche

In PHP ist das häufigste zweidimensionale Array ein zweidimensionales assoziatives Array, das in Form von Schlüssel-Wert-Paaren gespeichert ist, zum Beispiel:

$students = array(
    array('name' => 'Alice', 'score' => 85),
    array('name' => 'Bob', 'score' => 72),
    array('name' => 'Charlie', 'score' => 91)
);

Wie oben gezeigt, ist das Array $students Wird zum Speichern der Namen von Schülern und Noten verwendet, wobei jedes Element ein assoziatives Array ist. In einigen Szenarien müssen wir möglicherweise die Daten transponieren, dh die Daten in jeder Spalte in eine Zeile und die Daten in jeder Zeile in eine Spalte konvertieren. Nach der Transponierung des obigen Arrays sollte das Ergebnis beispielsweise lauten: $students数组用来存储学生的姓名和成绩,其中每个元素都是一个关联数组。在某些场景下,我们可能需要对这些数据进行转置操作,即将每一列中的数据变为一行,而将每一行中的数据变为一列。例如,将上述数组转置后,得到的结果应该是:

$transposed = array(
    array('name' => 'Alice', 'Bob', 'Charlie'),
    array('score' => 85, 72, 91)
);

这样的数组结构更适合某些分析和统计操作。本文将介绍如何用PHP将二维关联数组进行转置操作。

方法一:使用foreach循环转置

最简单的方法是使用foreach循环遍历原数组并生成新的数组。具体实现如下:

function array_transpose($array) {
    $result = array();
    foreach ($array as $key => $row) {
        foreach ($row as $subkey => $subvalue) {
            $result[$subkey][$key] = $subvalue;
        }
    }
    return $result;
}

该函数接受一个二维关联数组作为参数,返回转置后的新数组。首先,我们定义一个空数组$result作为结果数组。然后,我们使用双重循环遍历原数组,将行变成列,列变成行。在内层循环中,我们使用$subkey作为新数组的键,将原数组中的值$subvalue赋值给新数组的值。外层循环中,我们使用$key作为新数组的列名,并将新的一列添加到$result数组中。最后,返回转置后的新数组。

使用该函数,我们可以很容易地将上述示例数组进行转置操作:

$transposed = array_transpose($students);

使用该方法的优点是简单易懂,适用于小规模数据,缺点是在数据量较大时性能较差。

方法二:使用array_map和call_user_func_array函数转置

另一种方法是使用PHP提供的array_map和call_user_func_array函数。这种方法的实现方式更加简洁,同时也更加高效。具体实现如下:

function array_transpose($array) {
    return call_user_func_array('array_map', array_merge(array(null), $array));
}

该函数也接受一个二维关联数组作为参数,返回转置后的新数组。首先,我们使用array_merge函数将$array

$transposed = array_transpose($students);
Eine solche Array-Struktur eignet sich besser für bestimmte Analysen und statistische Operationen. In diesem Artikel wird erläutert, wie Sie mit PHP ein zweidimensionales assoziatives Array transponieren.

Methode 1: Verwenden Sie die foreach-Schleife zum Transponieren

Die einfachste Methode besteht darin, die foreach-Schleife zu verwenden, um das ursprüngliche Array zu durchlaufen und ein neues Array zu generieren. Die spezifische Implementierung lautet wie folgt:

rrreee

Diese Funktion akzeptiert ein zweidimensionales assoziatives Array als Parameter und gibt das transponierte neue Array zurück. Zuerst definieren wir ein leeres Array $result als Ergebnisarray. Anschließend verwenden wir eine Doppelschleife, um das ursprüngliche Array zu durchlaufen und dabei Zeilen in Spalten und Spalten in Zeilen umzuwandeln. In der inneren Schleife verwenden wir $subkey als Schlüssel des neuen Arrays und weisen den Wert $subvalue im ursprünglichen Array dem Wert des neuen Arrays zu. In der äußeren Schleife verwenden wir $key als Spaltennamen des neuen Arrays und fügen die neue Spalte dem $result-Array hinzu. Abschließend wird das neue transponierte Array zurückgegeben.

Mit dieser Funktion können wir das obige Beispielarray einfach umsetzen: 🎜rrreee🎜Der Vorteil dieser Methode besteht darin, dass sie einfach und leicht zu verstehen und für kleine Datenmengen geeignet ist. Der Nachteil besteht darin, dass die Leistung schlecht ist Die Datenmenge ist groß. 🎜🎜Methode 2: Verwenden Sie die Funktionen array_map und call_user_func_array zum Transponieren. 🎜🎜Eine andere Methode besteht darin, die von PHP bereitgestellten Funktionen array_map und call_user_func_array zu verwenden. Die Umsetzung dieser Methode ist einfacher und effizienter. Die spezifische Implementierung lautet wie folgt: 🎜rrreee🎜Diese Funktion akzeptiert auch ein zweidimensionales assoziatives Array als Parameter und gibt das neue Array nach der Transposition zurück. Zuerst verwenden wir die Funktion array_merge, um das Array $array mit einem Nullwert zusammenzuführen und es an die Funktion call_user_func_array zu übergeben. In diesem Beispiel verarbeitet die Funktion array_map die zusammengeführten Arrays. Der erste Parameter der Funktion array_map ist eine Rückruffunktion, die angibt, wie jede Eingabe-Array-Position behandelt werden soll. Ein Nullwert gibt an, dass die Rückruffunktion keinen Parameternamen hat und Standardwerte verwendet, um das Eingabearray zu verarbeiten. In unserem Beispiel listet die Rückruffunktion alle Indexpositionen des Eingabearrays als Zeilen auf und verwendet $array zum Erstellen einer Spalte. Dies ist äußerst wichtig, um das Verhalten dieser Daten zu verändern. Tatsächlich akzeptiert diese Funktion den ersten Wert jedes Arrays als Argument und ersetzt ihn durch das Array selbst. Da jeder Schlüssel nur einmal im Array vorkommt, ist das resultierende Array garantiert konfliktfrei. 🎜🎜Mit dieser Funktion können wir das obige Beispielarray wie folgt transponieren: 🎜rrreee🎜Die Vorteile dieser Methode bestehen darin, dass sie effizient, prägnant und leicht verständlich ist und sich für große Datenmengen und komplexe Vorgänge eignet. 🎜🎜Zusammenfassung🎜🎜Es gibt zwei Möglichkeiten, die zweidimensionale assoziative Array-Transponierungsoperation in PHP zu implementieren: die Verwendung einer foreach-Schleife und die Verwendung der Funktionen array_map und call_user_func_array. Beide Methoden haben ihre eigenen Vorteile und die Wahl der Methode hängt vom jeweiligen Anwendungsszenario ab. Für kleine Datenmengen können Sie die foreach-Schleifenmethode wählen. Für große Datenmengen und komplexe Vorgänge wird empfohlen, die Funktionsmethoden array_map und call_user_func_array zu verwenden. 🎜

Das obige ist der detaillierte Inhalt vonSo transponieren Sie ein zweidimensionales Objektarray in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn