Web-Tor Medlem sedan nov. 2000 13 890 inlägg Trådstart 6 nov. 2000 16:48 #1 I en array har jag värden som består av tre bokstäver och tre siffror (t.ex. ABC123).
Hur gör jag om jag vill sortera dessa i nummerordning? Bokstäverna spelar alltså ingen roll men de måste ända ”finnas kvar”. Jag kan inte använda <substr> för att plocka bort bokstäverna eftersom jag i ett senare skede behöver alla sex tecken.
Kan man använda PHP:s fina sort-funktion på något sätt kanske?
/Tor
S stevenet Medlem sedan juni 2000 1 251 inlägg Varför inte kopiera arrayen och sedan rensa bort ABC?
$kopia=$array[0];
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Det är just det som inte går. Jag vill ha array:en i den här ordningen:
CCC111
BBB222
AAA333
Bokstäverna måste vara med men skall inte vara med i själva sorteringen.
Okey?
/Tor
W woodi Medlem sedan feb. 2000 1 270 inlägg Web-Tor
Jag har ingen lösning så här på rak arm, men jag börjar bli nyfiken på vad Du håller på med!
Ska se om jag kan klura ut någon lösning på detta!
S Swey Medlem sedan apr. 2000 3 971 inlägg Två alternativ.
1. Lägg värdet du vill sortera efter som nyckel.
$array[111] = "CCC111";
$array[222] = "BBB222";
$array[333] = "AAA333";
Använd alt. ksort för att sortera efter nyckeln och sedan foreach för att skriva ut den i rätt ordning.
http://se.php.net/manual/function.ksort.php
2. Skapa en ny multiarray och lägg värdet du vill sortera efter på en plats och det du vill skriva ut på den andra.
$array[] = array(111, "CCC111");
$array[] = array(222, "BBB222");
$array[] = array(333, "AAA333");
Nu blir 0 sorteringsvärdet och 1 namnet.
För att sortera de använder du usort.
function mysort($a, $b) {
return ($a[0] > $b[0]);
}
usort($array, mysort);
http://se.php.net/manual/function.usort.php
Anm. Du kan alltid byta ut AAA111 mot AAA och slå ihop dem när du skriver ut (i båda fallen).
R Robban Medlem sedan dec. 1999 2 555 inlägg Man kan även använda befintlig array genom att använda usort på följande sätt (antar att arrayen heter $array):
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
function cmp ($a, $b) {
return (substr($a,3) > substr($b,3)) ? 1 : -1;
}
usort ($array, cmp);
</font>
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Nu när mitt problem är löst för den här gången passar jag på att tacka alla för hjälpen.
Robban - Du är min idol!
/Tor