Heim > Artikel > Backend-Entwicklung > So konvertieren Sie ein mehrdimensionales Array in ein eindimensionales Array in PHP
Das Konvertieren mehrdimensionaler Arrays und eindimensionaler Arrays in PHP ist kein schwieriger Vorgang. Dieses Ziel kann durch die korrekte Verwendung einiger Funktionen leicht erreicht werden.
Arrays sind in PHP ein sehr nützlicher und häufig verwendeter Datentyp und werden häufig in der tatsächlichen Entwicklung verwendet. Neben der Bereitstellung regulärer Operationen zum Speichern und Zugreifen auf Elemente ermöglichen PHP-Arrays auch die Verwendung mehrdimensionaler und eindimensionaler Arrays, die zum Speichern komplexer Strukturdaten bzw. einiger einfacher Daten verwendet werden.
Mehrdimensionales Array bedeutet, dass andere Arrays innerhalb des Arrays verschachtelt sind, das heißt, die Array-Elemente sind ebenfalls ein Array. Sie können beliebige Dimensionen haben, aber jedes Array muss einen logisch eindeutigen Schlüssel haben. Beispielsweise kann ein mehrdimensionales Array, das zum Speichern der Noten von drei Kursen verwendet wird, wie folgt dargestellt werden:
$score = array( "math" => array( "Tom" => 89, "Jerry" => 92, "John" => 76 ), "english" => array( "Tom" => 78, "Jerry" => 85, "John" => 91 ), "science" => array( "Tom" => 95, "Jerry" => 84, "John" => 88 ) );
, während sich ein eindimensionales Array auf ein Array bezieht, in dem jedes Element nur einen Wert enthält. Dieser Wert kann eine Zeichenfolge sein. eine Zahl und boolesche Werte usw. Die Schlüssel eines eindimensionalen Arrays können Zeichenfolgen oder Zahlen sein, die Werte numerischer Schlüssel müssen jedoch Ganzzahlen oder Gleitkommazahlen sein. Zum Beispiel:
$fruit = array("apple", "orange", "banana", "pear");
Das Konvertieren eines mehrdimensionalen Arrays in ein eindimensionales Array ist eine sehr häufige Operation für einige Vorgänge, bei denen Elemente sortiert, verglichen, gesucht usw. werden müssen Bei mehrdimensionalen Arrays ist die Verwendung eindimensionaler Arrays praktischer. Im Folgenden werden zwei Methoden zum Konvertieren mehrdimensionaler Arrays in eindimensionale Arrays vorgestellt.
Rekursion ist eine sehr leistungsfähige Methode, mit der wir viele Aufgaben problemlos bewältigen können, einschließlich der Verarbeitung komplexer mehrdimensionaler Arrays. Durch die Verwendung einer rekursiven Funktion zum Konvertieren eines mehrdimensionalen Arrays in ein eindimensionales Array können Sie die Anzahl der Ebenen im Array schrittweise reduzieren und schließlich alle Elemente in ein neues eindimensionales Array verschieben. Die spezifische Implementierung ist wie folgt:
function multi_to_one($multi_arr) { static $result_arr = array(); foreach ($multi_arr as $key => $val) { if (is_array($val)) { multi_to_one($val); } else { $result_arr[$key] = $val; } } return $result_arr; }
In dieser Funktion durchlaufen wir jedes Element. Wenn wir feststellen, dass das aktuelle Element ein Array ist, führen wir eine rekursive Operation daran aus, bis das Element kein Array mehr ist Fügen Sie das aktuelle Element dem in der Funktion definierten statischen Array $result_arr
hinzu. Schließlich geben wir das verarbeitete eindimensionale Array zurück. $result_arr
中。最后,我们返回这个处理好的一维数组。
使用这个函数可以将上文中的多维数组 $score
转换为一维数组:
$result = multi_to_one($score); print_r($result);
输出结果为:
Array ( [Tom] => 95 [Jerry] => 84 [John] => 88 )
PHP 中有一个专门用于遍历数组的函数 array_walk_recursive
,它可以遍历多维数组中的每一个元素。这个函数可以接受一个回调函数作为第二个参数,我们可以在这个回调函数中操作元素并将它添加到新的一维数组中。下面是具体实现:
function flatten_array($multi_arr) { $result_arr = array(); array_walk_recursive($multi_arr, function($val, $key) use (&$result_arr) { $result_arr[$key] = $val; }); return $result_arr; }
与第一个方法相比,这个方法使用了一个匿名函数来完成回调操作,这个函数使用了 use
关键字将外部变量 $result_arr
引入,并将处理好的元素存储在这个数组中。最后返回生成的一维数组。
使用这个函数也可以将上文的多维数组 $score
转换为一维数组:
$result = flatten_array($score); print_r($result);
输出结果为:
Array ( [Tom] => 95 [Jerry] => 84 [John] => 88 )
将一维数组转换为多维数组也是一个非常常见的需求,在实际应用中经常遇到需要根据某些条件对一维数组进行分组的情况。以下介绍了一种将一维数组转为多维数组的方法。
array_reduce
是 PHP 中的一个高阶函数,它可以像 array_walk_recursive
一样遍历数组,但是与 array_walk_recursive
不同的是, array_reduce
还可以接受一个参数作为函数的初始值,这个值会成为每个回调函数的初始值传递给它们。 array_reduce
可以被用于各种类型的计算和处理操作,我们可以通过它来将一维数组转换为多维数组。
下面是具体实现:
function group_array($data_arr, $group_key) { $result_arr = array_reduce($data_arr, function(&$result, $item) use ($group_key) { $index = $item[$group_key]; if (!isset($result[$index])) { $result[$index] = array(); } $result[$index][] = $item; return $result; }, array()); return $result_arr; }
在这个函数中,我们使用了匿名函数来执行回调函数,在遍历数组时,如果当前元素的 $group_key
值还没有被加入到新的多维数组中,我们就创建一个新的数组元素作为其键,然后将当前元素添加到这个新数组的值中。在整个过程中,回调函数的第一个参数 $result
$score
oben in ein eindimensionales Array umzuwandeln:
$data = array( array("id" => 1, "name" => "Tom", "group" => "A"), array("id" => 2, "name" => "Jerry", "group" => "A"), array("id" => 3, "name" => "John", "group" => "B"), array("id" => 4, "name" => "Smith", "group" => "C"), );Das Ausgabeergebnis ist:
$result = group_array($data, "group"); print_r($result);Methode 2: Verwenden Sie die Funktion array_walk_recursive Es gibt eine Sonderfunktion in PHP Die Funktion
array_walk_recursive
wird zum Durchlaufen des Arrays verwendet. Sie kann jedes Element im mehrdimensionalen Array durchlaufen. Diese Funktion kann eine Callback-Funktion als zweiten Parameter akzeptieren, in der wir das Element manipulieren und zu einem neuen eindimensionalen Array hinzufügen können. Das Folgende ist die spezifische Implementierung: Array ( [A] => Array ( [0] => Array ( [id] => 1 [name] => Tom [group] => A ) [1] => Array ( [id] => 2 [name] => Jerry [group] => A ) ) [B] => Array ( [0] => Array ( [id] => 3 [name] => John [group] => B ) ) [C] => Array ( [0] => Array ( [id] => 4 [name] => Smith [group] => C ) ) )
use
, um die externe Variable $ festzulegen result_arr
wird eingeführt und die verarbeiteten Elemente werden in diesem Array gespeichert. Abschließend wird das generierte eindimensionale Array zurückgegeben. Mit dieser Funktion können Sie auch das obige mehrdimensionale Array $score
in ein eindimensionales Array konvertieren: 🎜rrreee🎜Das Ausgabeergebnis ist: 🎜rrreee🎜Eindimensionales Array in multi konvertieren -dimensionales Array🎜🎜Eindimensionales Array konvertieren Die Konvertierung in ein mehrdimensionales Array ist ebenfalls eine sehr häufige Anforderung. In praktischen Anwendungen müssen eindimensionale Arrays nach bestimmten Bedingungen gruppiert werden. Im Folgenden wird eine Methode zum Konvertieren eines eindimensionalen Arrays in ein mehrdimensionales Array beschrieben. 🎜🎜Methode: Verwenden Sie die Funktion array_reduce 🎜🎜array_reduce
ist eine Funktion höherer Ordnung in PHP, die das Array wie array_walk_recursive
durchlaufen kann, jedoch mit array_walk_recursive code> > Der Unterschied besteht darin, dass <code>array_reduce
auch einen Parameter als Anfangswert der Funktion akzeptieren kann und dieser Wert zum Anfangswert jeder Rückruffunktion wird und an diese übergeben wird. array_reduce
kann für verschiedene Arten von Berechnungen und Verarbeitungsvorgängen verwendet werden, und wir können damit eindimensionale Arrays in mehrdimensionale Arrays konvertieren. 🎜🎜Das Folgende ist die spezifische Implementierung: 🎜rrreee🎜In dieser Funktion verwenden wir eine anonyme Funktion, um die Rückruffunktion beim Durchlaufen des Arrays auszuführen, wenn der $group_key
-Wert des aktuellen Elements nicht vorhanden ist wurde zum neuen hinzugefügt In einem mehrdimensionalen Array erstellen wir ein neues Array-Element als Schlüssel und fügen dann das aktuelle Element zum Wert dieses neuen Arrays hinzu. Während des gesamten Prozesses wird der erste Parameter $result
der Callback-Funktion kontinuierlich geändert und übergeben, bis schließlich ein verarbeitetes mehrdimensionales Auswahlarray zurückgegeben wird. 🎜🎜Verwenden Sie diese Funktion, um ein eindimensionales Array: 🎜rrreee🎜 in ein mehrdimensionales Array gemäß dem „Gruppen“-Schlüssel umzuwandeln: 🎜rrreee🎜Das Ausgabeergebnis ist: 🎜rrreee🎜Schlussfolgerung🎜🎜Die Konvertierung von mehrdimensionalen Arrays und eindimensionale Arrays in PHP sind unsere Anforderungen, denen wir in der täglichen Entwicklung häufig begegnen. Wir können rekursive Funktionen oder Funktionen höherer Ordnung verwenden, um mehrdimensionale Arrays in eindimensionale Arrays umzuwandeln oder eindimensionale Arrays in mehrdimensionale Arrays umzuwandeln. In praktischen Anwendungen müssen wir je nach Situation unterschiedliche Methoden auswählen und geeignete Funktionen verwenden, um die Konvertierung abzuschließen. 🎜Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein mehrdimensionales Array in ein eindimensionales Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!