Heim  >  Artikel  >  Backend-Entwicklung  >  Der Name des PHP-Array-Sortierschlüssels bleibt unverändert

Der Name des PHP-Array-Sortierschlüssels bleibt unverändert

PHPz
PHPzOriginal
2023-05-05 21:46:07944Durchsuche

Bei der PHP-Programmierung müssen wir häufig Arrays sortieren. PHP bietet viele Array-Sortierfunktionen wie sort(), asort(), ksort() usw., die Array-Elemente auf unterschiedliche Weise sortieren. Diese Funktionen ändern jedoch standardmäßig die Reihenfolge der Array-Schlüssel. Was ist, wenn wir die Reihenfolge der Array-Schlüssel beibehalten möchten? In diesem Artikel werden Ihnen einige Methoden vorgestellt.

  1. Verwenden Sie die Funktion uksort()

Die Funktion uksort() ist eine sehr leistungsstarke Funktion in PHP, die es uns ermöglicht, die Sortierfunktion selbst zu definieren . und sortieren Sie das Array gemäß unserer Methode. Die Verwendung der Funktion uksort() ist wie folgt:

bool uksort(array &$array, callable $cmp_function)

Unter diesen ist $array das zu sortierende Array und $cmp_function die benutzerdefinierte Sortierfunktion.

In der benutzerdefinierten Sortierfunktion können wir die beiden Parameter $a und $b verwenden, um zwei Array-Elemente zu vergleichen und das sortierte Ergebnis zurückzugeben. Wenn $a vor $b steht, wird eine ganze Zahl kleiner als 0 zurückgegeben; wenn $a vor $b steht, wird eine ganze Zahl größer als 0 zurückgegeben; wenn $a und $b gleich sind, wird 0 zurückgegeben.

Das Folgende ist ein Beispielcode:

<?php
function my_sort($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? 1 : -1;
}

$array = array(
    'c' => 1,
    'a' => 2,
    'b' => 3,
);
uksort($array, 'my_sort');
print_r($array);
?>

Der obige Code gibt Folgendes aus:

Array
(
    [c] => 1
    [a] => 2
    [b] => 3
)

Wie Sie sehen können, die Schlüsselnamen des Arrays Elemente haben sich nicht geändert. Unter diesen vergleicht die Funktion my_sort() basierend auf der Größenbeziehung der Schlüsselnamen.

  1. Funktion ksort() verwenden und Schlüsselnamen speichern

funktion ksort() ist eine häufig verwendete Funktion in PHP zum Sortieren nach Schlüsselnamen . Im Gegensatz zu sort() und asort() ändert ksort() nur die Reihenfolge der Array-Elemente, ohne die Schlüsselnamen zu ändern.

Durch einige Tricks können wir jedoch auch den ursprünglichen Schlüsselnamen speichern. Die spezifische Methode lautet: Speichern Sie zuerst den Schlüsselnamen und den entsprechenden Wert in einem neuen Array, sortieren Sie dann das neue Array und weisen Sie schließlich die sortierten Werte dem ursprünglichen Array neu zu. Der Beispielcode lautet wie folgt:

<?php
$array = array(
    'c' => 1,
    'a' => 2,
    'b' => 3,
);

$tmp_array = array();
foreach ($array as $key => $value) {
    $tmp_array[$key] = $value;
}

ksort($tmp_array);

$new_array = array();
foreach ($tmp_array as $key => $value) {
    $new_array[$key] = $value;
}

$array = $new_array;
print_r($array);
?>

Der obige Code gibt Folgendes aus:

Array
(
    [c] => 1
    [a] => 2
    [b] => 3
)

Wie Sie sehen können, haben sich die Schlüsselnamen der Array-Elemente nicht geändert. Diese Methode erfordert jedoch die Verwendung eines zusätzlichen Arrays zum Speichern der ursprünglichen Schlüsselnamen, was bei einer großen Anzahl von Array-Elementen zu Speicherproblemen führen kann.

  1. Verwenden Sie die Funktion asort() und speichern Sie den Schlüsselnamen.

Ähnlich wie ksort() kann auch die Funktion asort() nach sortieren Wert, aber es ändert auch die Reihenfolge der Array-Elemente.

In ähnlicher Weise können wir auch einige Techniken verwenden, um die ursprünglichen Schlüsselnamen zu speichern. Die spezifische Methode lautet: Speichern Sie zuerst den Schlüsselnamen und den entsprechenden Wert in einem neuen Array, sortieren Sie dann das neue Array und weisen Sie schließlich die sortierten Werte dem ursprünglichen Array neu zu. Der Beispielcode lautet wie folgt:

<?php
$array = array(
    'c' => 1,
    'a' => 2,
    'b' => 3,
);

$tmp_array = array();
foreach ($array as $key => $value) {
    $tmp_array[$key] = $value;
}

asort($tmp_array);

$new_array = array();
foreach ($tmp_array as $key => $value) {
    $new_array[$key] = $value;
}

$array = $new_array;
print_r($array);
?>

Der obige Code gibt Folgendes aus:

Array
(
    [c] => 1
    [a] => 2
    [b] => 3
)

Wie Sie sehen können, haben sich die Schlüsselnamen der Array-Elemente nicht geändert. Ebenso erfordert diese Methode die Verwendung zusätzlicher Arrays zum Speichern der ursprünglichen Schlüsselnamen, was zu Speicherproblemen führen kann.

Zusammenfassend lässt sich sagen, dass die oben genannten drei Methoden die Reihenfolge der Array-Schlüsselnamen beibehalten können und je nach Situation ausgewählt werden können. Es ist jedoch zu beachten, dass bei doppelten Schlüsselnamen im Array die Schlüsselnamen nach der Sortierung möglicherweise fehlen und dies entsprechend der jeweiligen Situation behandelt werden muss.

Das obige ist der detaillierte Inhalt vonDer Name des PHP-Array-Sortierschlüssels bleibt unverändert. 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