|
Allmänt
Manipulationer
Sorteringar
Stackar och köer
Strängar
1.12.3 Sorteringar
Det finns en mängd olika metoder att sortera
arrays på. Se mer i array .
Vi kommer oss dock rätt långt med asort,
arsort, ksort,
krsort, uasort
och uksort.
- asort - a-ö enligt arrayens värde
- arsort - ö-a enligt arrayens värde
- ksort - a-ö enligt arrayens index
- krsort - ö-a enligt arrayens index
- uasort - sortering av värden enligt egen metod
- uksort - sortering av index enligt egen metod
Se nedan för exempel:
<?php
# skapar en array
$personer["anders"] = "nerd";
$personer["ville"] = "guru";
$personer["kalle"] = "dum";
$personer["adam"] = "son";
$personer["kain"] = "elak";
echo "sorterar med <b>asort</b> a-ö enligt värdet<br />";
asort( $personer );
visa ( $personer );
echo "sorterar med <b>arsort</b> ö-a enligt värdet<br />";
arsort( $personer );
visa ( $personer );
echo "sorterar med <b>ksort</b> a-ö enligt index<br />";
ksort( $personer );
visa ( $personer );
echo "sorterar med <b>ksort</b> ö-a enligt index<br />";
krsort( $personer );
visa ( $personer );
echo "sorterar med <b>uasort</b> egen sortering index<br />";
# andra parametern är namnet på den funktion som skall utföra
# jämförelsen.
uasort( $personer , "myAsortCompare" );
visa ( $personer );
echo "sorterar med <b>uksort</b> egen sortering index<br />";
# andra parametern är namnet på den funktion som skall utföra
# jämförelsen.
uksort( $personer , "myKsortCompare" );
visa ( $personer );
function visa( $arrayen )
{
if (is_array( $arrayen ))
{
echo "<table>";
echo "<tr><td><b>key</b></td><td><b>value</b></td></tr>\n";
foreach( $arrayen as $key=>$value)
{
echo "<tr><td>$key</td><td>$value</td></tr>";
}
echo "</table><br />";
}
else
{
echo "Inge array<br />";
}
}
# egen funktion för uksort
# sätter alltid anders först
# allt annat sorteras som normalt
# den skall returnera:
# -1 om det första värdet i jämförelsen skall komma före det andra
# 0 om de är lika
# 1 om det andra värdet skall komma före det första
function myKsortCompare( $left, $right )
{
# on första var "anders" säg att det är först
if ($left == "anders")
{
return -1;
}
# on andra var "anders" säg att det är först
elseif ($right == "anders")
{
return 1;
}
# gör en vanlig strängjämförelse (inte case-sensitive)
else
{
return strcasecmp( $left, $right );
}
}
# som ovan men sätter guru först
function myAsortCompare( $left, $right )
{
# on första var "guru" säg att det är först
if ($left == "guru")
{
return -1;
}
# on andra var "guru" säg att det är först
elseif ($right == "guru")
{
return 1;
}
# gör en vanlig strängjämförelse (inte case-sensitive)
else
{
return strcasecmp( $left, $right );
}
}
?>
|