Die Leistungsoptimierung der mehrdimensionalen Array-Sortierung von PHP kann sowohl durch Code als auch durch Algorithmen verbessert werden. Die Codeoptimierung umfasst die Verwendung von Usort- und selbstgeschriebenen Vergleichsfunktionen, um übermäßige Vergleiche und Kopien zu vermeiden. Die Algorithmusoptimierung umfasst schnelle Sortier- und Zusammenführungssortieralgorithmen. Die Schnellsortierung eignet sich für große Arrays, während die Zusammenführungssortierung für alle Datentypen geeignet ist. Das Codebeispiel zeigt, wie Sie ein Array mit untergeordneten Elementen mithilfe dieser beiden Algorithmen sortieren: Schnellsortierung nach ID und Zusammenführungssortierung nach Name.
PHP Multidimensional Array Sorting Performance Optimization: Code und Algorithmus
Einführung
Multidimensionales Array ist eine häufige Datenstruktur in PHP und ist sehr nützlich bei der Verarbeitung komplexer Daten. Allerdings treten Leistungsprobleme auf, wenn Sie mehrdimensionale Arrays sortieren müssen. In diesem Artikel wird die Leistungsoptimierung der mehrdimensionalen Array-Sortierung in PHP untersucht und Lösungen sowohl unter Code- als auch unter Algorithmusaspekten bereitgestellt.
Codeoptimierung
Verwenden Sie usort
und eine selbst geschriebene Vergleichsfunktionusort
和自写比较函数
相比于内置的 sort
函数,usort
Im Vergleich zur integrierten sort
-Funktion ist die usort code>-Funktion Bietet eine größere Flexibilität, da Sie benutzerdefinierte Vergleichsfunktionen zum Sortieren von Array-Elementen verwenden können. Selbstgeschriebene Vergleichsfunktionen können an Ihre spezifischen Sortieranforderungen angepasst werden und sorgen so für eine effizientere Sortierung. <strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
function compare($a, $b) {
return $a['key'] <=> $b['key'];
}
usort($array, 'compare');</pre><div class="contentsignin">Nach dem Login kopieren</div></div></strong></p>Vermeiden Sie übermäßiges Vergleichen und Kopieren<p></p><ul>Während des Sortiervorgangs werden Array-Elemente wiederholt verglichen und kopiert. Die Leistung kann verbessert werden, indem die Anzahl unnötiger Vergleiche und Kopien reduziert wird. Die folgenden Tipps können Ihnen helfen, diese Vorgänge zu vermeiden: <li><strong></strong></li>Verwenden Sie die Zusammenführungssortierung: <li>Die Zusammenführungssortierung ist ein Divide-and-Conquer-Algorithmus, der die Anzahl unnötiger Vergleiche reduziert. <strong></strong></li> Erstellen Sie eine Kopie zum Sortieren: </ul> Sortieren Sie eine Kopie des Arrays, um eine Änderung des ursprünglichen Arrays zu vermeiden. <p><strong></strong></p>Algorithmusoptimierung<p><strong></strong></p>Schnellsortierung verwenden: <p></p><p>Schnellsortierung ist ein effizienter Sortieralgorithmus, der sich besonders für große Arrays eignet. Dabei wird das Array in kleinere Teile unterteilt und die Teile rekursiv sortiert. <strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
function quickSort($array) {
if (count($array) <= 1) {
return $array;
}
$pivot = $array[0];
$left = array_filter($array, function ($item) use ($pivot) {
return $item < $pivot;
});
$right = array_filter($array, function ($item) use ($pivot) {
return $item >= $pivot;
});
return array_merge(quickSort($left), [$pivot], quickSort($right));
}</pre><div class="contentsignin">Nach dem Login kopieren</div></div></strong></p>Verwenden Sie die Zusammenführungssortierung: <p></p><p>Die Zusammenführungssortierung ist ebenfalls ein effizienter Sortieralgorithmus, der für jede Art von Daten funktioniert. Es funktioniert, indem es das Array rekursiv in kleinere Teile aufteilt, die Teile sortiert und sie dann zusammenführt. <strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
function mergeSort($array) {
if (count($array) <= 1) {
return $array;
}
$mid = intdiv(count($array), 2);
$left = mergeSort(array_slice($array, 0, $mid));
$right = mergeSort(array_slice($array, $mid));
return merge($left, $right);
}
function merge($left, $right) {
$result = [];
while (count($left) > 0 && count($right) > 0) {
if ($left[0] <= $right[0]) {
$result[] = array_shift($left);
} else {
$result[] = array_shift($right);
}
}
return array_merge($result, $left, $right);
}</pre><div class="contentsignin">Nach dem Login kopieren</div></div></strong></p>Praktischer Fall<p></p><p>Das Folgende ist ein praktischer Fall, der zeigt, wie die Schnellsortierung und Zusammenführungssortierung verwendet wird, um ein mehrdimensionales Array mit Unterelementen zu sortieren: <strong><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><?php
$array = [
['id' => 1, 'name' => 'John'],
['id' => 3, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob']
];
// 使用快速排序按 id 排序
$quickSortedArray = quickSort($array);
// 使用归并排序按 name 排序
$mergeSortedArray = mergeSort($array);
// 输出排序后的数组
print_r($quickSortedArray);
print_r($mergeSortedArray);</pre><div class="contentsignin">Nach dem Login kopieren</div></div></strong></p>Ausgabe: 🎜🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>Array
(
[0] => Array
(
[id] => 1
[name] => John
)
[1] => Array
(
[id] => 2
[name] => Bob
)
[2] => Array
(
[id] => 3
[name] => Alice
)
)
Array
(
[0] => Array
(
[id] => 2
[name] => Bob
)
[1] => Array
(
[id] => 1
[name] => John
)
[2] => Array
(
[id] => 3
[name] => Alice
)
)</pre><div class="contentsignin">Nach dem Login kopieren</div></div></strong>
Das obige ist der detaillierte Inhalt vonLeistungsoptimierung der mehrdimensionalen PHP-Array-Sortierung: vom Code zum Algorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!