Uksort()

Från Wiki.linux.se
Version från den 11 augusti 2024 kl. 05.42 av Admin (diskussion | bidrag)
Hoppa till navigering Hoppa till sök

uksort

(PHP 4, PHP 5, PHP 7, PHP 8)

uksort — Sortera en array efter nycklar med en användardefinierad jämförelsefunktion

Beskrivning

uksort(array &$array, callable $callback): true

Sorterar en array på plats efter nycklar med hjälp av en användarlevererad jämförelsefunktion för att bestämma ordningen.

Notera:

Om två medlemmar jämförs som lika behåller de sin ursprungliga ordning. Före PHP 8.0.0 var deras relativa ordning i den sorterade arrayen odefinierad.

Notera:

Återställer arrayens interna pekare till det första elementet.

Parametrar

array
Den array som ska sorteras.
callback
Jämförelsefunktionen måste returnera ett heltal mindre än, lika med, eller större än noll om det första argumentet anses vara respektive mindre än, lika med, eller större än det andra.
callback(mixed $a, mixed $b): int

Varning: Att returnera icke-heltalsvärden från jämförelsefunktionen, såsom float, kommer att resultera i en intern typomvandling till int av callback:ens returvärde. Så värden som 0.99 och 0.1 kommer båda att omvandlas till ett heltalsvärde av 0, vilket kommer att jämföra sådana värden som lika.

Returvärden

Returnerar alltid true.

Ändringslogg

Version Beskrivning
8.2.0 Returtypen är nu true; tidigare var det bool.
8.0.0 Om callback förväntar sig att en parameter ska passeras som referens kommer denna funktion nu att ge ut ett E_WARNING.

Exempel

Exempel #1 uksort()-exempel

<?php
function cmp($a, $b)
{
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

Exemplet ovan kommer att skriva ut:

an apple: 3
a banana: 4
the Earth: 2
John: 1

5 ytterligare exempel på användning av uksort

Exempel 1: Grundläggande Sortering

<?php
function compare_keys($key1, $key2) {
    if ($key1 == $key2) {
        return 0;
    }
    return ($key1 < $key2) ? -1 : 1;
}

$fruits = array('orange' => 1, 'apple' => 5, 'banana' => 3);
uksort($fruits, 'compare_keys');
print_r($fruits);
?>

Sorterar frukterna efter nyckel i alfabetisk ordning.

Exempel 2: Sortera med stränglängd

<?php
function length_sort($a, $b) {
    return strlen($a) - strlen($b);
}

$items = array('kiwi' => 1, 'banana' => 2, 'apple' => 3);
uksort($items, 'length_sort');
print_r($items);
?>

Sorterar objekten efter nycklarnas stränglängd.

Exempel 3: Sortera efter nyckelns numeriska värde

<?php
function numeric_key_sort($a, $b) {
    return (int)$a - (int)$b;
}

$numbers = array('100' => 'a', '20' => 'b', '300' => 'c');
uksort($numbers, 'numeric_key_sort');
print_r($numbers);
?>

Sorterar nummer arrayen baserat på nyckelns numeriska värde.

Exempel 4: Användning av naturlig ordning

<?php
function nat_order_sort($a, $b) {
    return strnatcmp($a, $b);
}

$files = array('image10.png' => 1, 'image1.png' => 2, 'image2.png' => 3);
uksort($files, 'nat_order_sort');
print_r($files);
?>

Använder naturlig sortering för att sortera filnamn som om de var nummer.

Exempel 5: Fallkänslig sortering

<?php
function case_sensitive_sort($a, $b) {
    return strcmp($a, $b);
}

$cases = array('apple' => 1, 'Banana' => 2, 'APPLE' => 3);
uksort($cases, 'case_sensitive_sort');
print_r($cases);
?>

Sorterar med hänsyn till stora och små bokstäver i nycklarna.

Dessa exempel visar olika sätt att använda `uksort()` för att sortera arrayer i PHP baserat på nycklar med en användardefinierad jämförelsefunktion.

Se även

usort() - Sorterar en array efter värden med en användardefinierad jämförelsefunktion
uasort() - Sorterar en array med en användardefinierad jämförelsefunktion och bibehåller indexassociation
Sortering av Arrayer - Jämförelse av arraysorteringsfunktioner