PHP verfügt als leistungsstarke Programmiersprache über umfangreiche Datenstrukturen, unter denen zweidimensionale Arrays eine häufig verwendete Datenstruktur sind. In der täglichen Entwicklung müssen wir häufig ein zweidimensionales Array durchlaufen, um seine Schlüsseldaten zu finden. Wenn jedoch für jeden Durchlauf verschachtelte Schleifen verwendet werden, wird die zeitliche Komplexität sehr hoch. In diesem Artikel wird eine Methode zum Ermitteln des Schlüsselwerts eines zweidimensionalen Arrays in einer Schleife vorgestellt.
Ein zweidimensionales Array ist ein spezieller Array-Typ, der mehrere Arrays enthält und Elemente in Form von Zeilen und Spalten organisiert. Ein zweidimensionales Array kann man sich als eine Matrix vorstellen, die aus mehreren eindimensionalen Arrays besteht, wobei auf jedes Element über einen Zeilenindex und einen Spaltenindex zugegriffen werden kann. In PHP kann ein zweidimensionales Array wie folgt definiert werden:
$arr = array( array(1, 2, 3), array(4, 5, 6), array(7, 8, 9) );
Der obige Code definiert ein zweidimensionales $arr-Array, das drei eindimensionale Arrays mit jeweils drei Elementen enthält.
Bei der traditionellen zweidimensionalen Array-Traversal-Methode ist es normalerweise erforderlich, zwei verschachtelte Schleifen zu verwenden, eine zum Durchlaufen von Zeilen und die andere zum Durchlaufen von Spalten. Zum Beispiel:
foreach ($arr as $key1 => $value1) { foreach ($value1 as $key2 => $value2) { if ($value2 == $target) { echo "关键值所在的行为:" . $key1 . "<br>"; echo "关键值所在的列为:" . $key2 . "<br>"; } } }
Im obigen Code verwenden wir eine foreach-Schleife, um jedes Element im $arr-Array zu durchlaufen. Die erste Schleife durchläuft die Zeilen und die zweite Schleife durchläuft die Spalten. Wenn das Zielelement $target gefunden wird, geben Sie die Zeile und Spalte aus, in der sich das Element befindet.
Die zeitliche Komplexität dieser Methode beträgt jedoch $O(n^2)$, das heißt, mit zunehmender Array-Größe nimmt die Anzahl der Schleifen exponentiell zu.
Jetzt stellen wir eine effizientere Methode vor, mit der Schlüsselwerte in einem zweidimensionalen Array in nur einer Schleife gefunden werden können. Diese Methode basiert auf einigen von PHP bereitgestellten Array-Funktionen und hat den Vorteil einer Zeitkomplexität von $O(n)$.
Zuerst müssen wir die Funktion array_map von PHP verwenden, um das zweidimensionale Array in ein eindimensionales Array umzuwandeln, und dann die Funktion array_search verwenden, um den Zielwert im eindimensionalen Array zu finden. Der Code lautet wie folgt:
// 将二维数组转成一维数组 $array = array_reduce($arr, 'array_merge', array()); // 在一维数组中查找目标值 $key = array_search($target, $array); // 计算目标值所在的行和列 $row = floor($key / count($arr[0])); $col = $key % count($arr[0]); echo "关键值所在的行为:" . $row . "<br>"; echo "关键值所在的列为:" . $col . "<br>";
Im obigen Code verwenden wir die Funktion array_reduce, um das zweidimensionale Array in ein eindimensionales Array umzuwandeln. Die Funktion array_search findet den Zielwert im eindimensionalen Array und berechnet die Zeile Summe des Zielwerts im zweidimensionalen Array.
Die zeitliche Komplexität dieser Methode beträgt $O(n)$. Im Vergleich zur herkömmlichen Methode wurde die Leistung erheblich verbessert.
In diesem Artikel wird eine effiziente Methode vorgestellt, mit der der Schlüsselwert eines zweidimensionalen Arrays in einer Schleife ermittelt werden kann. Durch die Verwendung einiger von PHP bereitgestellter Array-Funktionen haben wir die Zeitkomplexität von $O(n^2)$ auf $O(n)$ reduziert und so die Leistung des Programms erheblich verbessert. Ich hoffe, dass dieser Artikel beim Durchlaufen und Durchsuchen zweidimensionaler Arrays in PHP hilfreich ist.
Das obige ist der detaillierte Inhalt vonPHP findet den Schlüssel in einem zweidimensionalen Array in einer Schleife. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!