Uksort(): Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) |
||
Rad 68: | Rad 68: | ||
John: 1 | John: 1 | ||
</pre> | </pre> | ||
== 5 ytterligare exempel på användning av uksort == | |||
=== Exempel 1: Grundläggande Sortering === | |||
<pre> | |||
<?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); | |||
?> | |||
</pre> | |||
Sorterar frukterna efter nyckel i alfabetisk ordning. | |||
=== Exempel 2: Sortera med stränglängd === | |||
<pre> | |||
<?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); | |||
?> | |||
</pre> | |||
Sorterar objekten efter nycklarnas stränglängd. | |||
=== Exempel 3: Sortera efter nyckelns numeriska värde === | |||
<pre> | |||
<?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); | |||
?> | |||
</pre> | |||
Sorterar nummer arrayen baserat på nyckelns numeriska värde. | |||
=== Exempel 4: Användning av naturlig ordning === | |||
<pre> | |||
<?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); | |||
?> | |||
</pre> | |||
Använder naturlig sortering för att sortera filnamn som om de var nummer. | |||
=== Exempel 5: Fallkänslig sortering === | |||
<pre> | |||
<?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); | |||
?> | |||
</pre> | |||
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 == | == Se även == |
Versionen från 11 augusti 2024 kl. 05.41
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