Web-TorMedlem sedan nov. 200013 890 inlägg 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
------------------
-----------
stevenetMedlem sedan juni 20001 251 inlägg Varför inte kopiera arrayen och sedan rensa bort ABC?
$kopia=$array[0];
------------------
SteveNet - stevenet@webmarkit.net
Stjäl inte mer än vad du kan bära, staten hatar konkurrens.
Web-TorMedlem sedan nov. 200013 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
------------------
-----------
woodiMedlem sedan feb. 20001 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!
------------------
woodi
Svenska FF1
www.johan-skog.nu
SweyMedlem sedan apr. 20003 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).
------------------
- Swey
Skriv först, tänk sen!
[Redigerat av Swey den 07 nov 2000]
RobbanMedlem sedan dec. 19992 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>
------------------
Robban < robban@lipogram.com >
Web-TorMedlem sedan nov. 200013 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
------------------
-----------