webForumDet fria alternativet

sortering

23 svar · 505 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Se nedan...

ironheadMedlem sedan mars 20011 346 inlägg
#2

Hur sorterar man en array mha namn i en speciell ordning?
(mySQL & PHP)

ironheadMedlem sedan mars 20011 346 inlägg
#3

Om jag har en array som ser ut såhär:

array[0]="Papper"
array[1]="Kartong"
array[2]="Bil"
array[3]="Smörgås"

Hur kan jag göra för att den skall sorteras som:

Kartong Bil Papper Smörgås

Där namnen i arrayen kan vara olika värden varje gång eller olika långa.

Vill alltså att ett speciellt namn ska ligga på en speciell plats i arrayen

MatteMedlem sedan aug. 20002 975 inlägg
#4

Om jag förstått dig rätt så vill du sortera din array, men vill samtidigt att ett visst värde ska ha en bestämd position.

Testa det här:

$array[0]="Papper";
$array[1]="Kartong";
$array[2]="Bil";
$array[3]="Smörgås";

function move_sort($array, $value, $position) {

   if (($key = array_search($value, $array)) === false) {
      sort($array);
      return $array;
   }
   
   unset($array[$key]);
   sort($array);
   
   array_splice($array, $position, 0, $value);
   
   return $array;

}

$array = move_sort($array, 'Kartong', 0);
ironheadMedlem sedan mars 20011 346 inlägg
#5

öh! Snyggt...det funkade!
...men hur faan funkar det? Jag fattar nada!

Jag vill alltså att jag oavsett hur många värden i arrayen skall kunna säga att om "Papper" finns med ska den alltid ha position [0] och finns Smörgås med så skall den alltid ha position [3] osv.

MatteMedlem sedan aug. 20002 975 inlägg
#6

Först skickar jag in arrayen, värdet jag försöker placera samt vilken position jag vill placera det i arrayen, till funktionen.

Finns inte värdet i arrayen så sorteras den bara och returneras.

Finns värdet så tar jag bort det, och sorterar den resterande arrayen.
Sedan sätter jag tillbaka värdet med array_splice, för att slutligen returnera arrayen.

array_splice är att man i en array i en viss position ersätter ett antal element med en array eller ett värde.
I det här fallet: sök upp position $position och ersätt 0 (noll) element med $value.

ironheadMedlem sedan mars 20011 346 inlägg
#7

så om jag vill att Smörgås ska ha värdet [3] så kan jag skriva:
$array = move_sort($array, 'Smörgås', 3);
...eller?

MatteMedlem sedan aug. 20002 975 inlägg
#8

ironhead skrev:

så om jag vill att Smörgås ska ha värdet [3] så kan jag skriva:
$array = move_sort($array, 'Smörgås', 3);
...eller?

Japp, men kom ihåg att första positionen är 0 (noll), så detta skulle lägga Smörgås sist.

Du kan också lägga in positionen med negativa värden.
$array = move_sort($array, 'Smörgås', -1);
skulle sätta Smörgås näst sist.

ironheadMedlem sedan mars 20011 346 inlägg
#9

om jag nu har en loop som ser ut ungefär såhär:

while($array = mysql_fetch_array($result))
  {
    If ($paket==$array["paket"])
    {
    }else{
     echo $array["paket"];
    }
    
     echo $array["Innnehall"];

     $paket= $array["paket"];
  }

datat som kommer ser ut såhär:

paket1 borste
paket1 kam
paket1 tandborste
paket1 rep

paket2 kalsong
paket2 tandpetare
paket2 tändare

paket 3 lampa
paket3 pizza
paket3 ägg
paket3 glass
paket3 briketter
paket3 lammstek

Hur gör jag då om jag vill ha en speciell sortering på innnehållen i paketen? Jag vill alltså kunna sätta ordningen på allt innehåll i paketen...
får det inte att funka :(

MatteMedlem sedan aug. 20002 975 inlägg
#10

Vad är det du ska ha det sorterat efter?

ironheadMedlem sedan mars 20011 346 inlägg
#11

Jag vill kunna sortera efter alla saker...om det tex. finns 10 st innehållssaker, så vill jag att om det finns ett rep i kartongen så ska det hamna först..finns det inget rep, så ska tex: sax hamna först.....sen vill jag om det finns lägga badhanduk efter den..osv osv.

Förstår du vad jag e ute efter...låter bara snurrigt när jag försöker förklara....måste vara värmen ;)

MatteMedlem sedan aug. 20002 975 inlägg
#12

Det där är jag ytterst tveksam om jag förstod.

Vill du först kunna välja/söka på några saker, och om de finns i arrayen ska de komma först, övriga saker i bokstavsordning ?

Ska det sorteras inom paketen, eller blir alltihop i en "påse" ?

ironheadMedlem sedan mars 20011 346 inlägg
#13

Vi säger såhär: Jag har 10 fasta saker i "innehållet" som jag vill sortera.....inte i bokstavsordning utan i den ordning jag vill...inte id inte i bokstavsordning utan bara i den ordning jag bestämmer....så hittar jag en sak i innehåll som heter "sax" så vill jag att den ska ha position 4 i arrayen

Jag vill alltså sätta fasta platser på valda ord.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#14

ironhead skrev:

Vi säger såhär: Jag har 10 fasta saker i "innehållet" som jag vill sortera.....inte i bokstavsordning utan i den ordning jag vill...inte id inte i bokstavsordning utan bara i den ordning jag bestämmer....så hittar jag en sak i innehåll som heter "sax" så vill jag att den ska ha position 4 i arrayen

Jag vill alltså sätta fasta platser på valda ord.

Får man fråga? Till vad skall detta användas? :q

ironheadMedlem sedan mars 20011 346 inlägg
#15

hehehe....struligt värre....jag vill bara ha en massa paket med en massa innehåll som jag kan bestämma ordningsföljden på..

jag vill alltså att det ska se ut såhär tex:

PAKET1
Sax Banjo Godis Tupp Gitarr Jeans

PAKET2
Sax Godis Tupp Jeans

Paket1 innehåller 6 saker paket2 4 ändå så följer det ett mönster...det ordningsmönster som jag vill sortera efter...

MatteMedlem sedan aug. 20002 975 inlägg
#16

Allt jag kan se är att Sax, Godis, Tupp och Jeans kommer i samma ordning i de bägge paketen, men något mönster kan jag inte se.

Du får annars bestämma ordningen manuellt. Ta en titt i den här tråden om det kan ge dig några idéer: http://www.webforum.nu/showthread.php?s=&threadid=79574

ironheadMedlem sedan mars 20011 346 inlägg
#17

vad jag menade var att om inte tex Banjo & Gitarr finns med så fylls de andra namnen på ett steg åt vänster.

MatteMedlem sedan aug. 20002 975 inlägg
#18

Men efter vilka utgångspunkter?

Vill du att dom som finns i paket 1 men INTE i paket 2 ska sättas först i paket 1?
Ska paket 2 sorteras på motsvarande vis ?
Ska de andra i paket 1 sorteras i samma ordning som paket 2, eller tvärtom?
Hur kommer paket 3 in i det hela ?
Kan det finnas fler paket än 1,2 och 3 ?

ironheadMedlem sedan mars 20011 346 inlägg
#19

Vill du att dom som finns i paket 1 men INTE i paket 2 ska sättas först i paket 1?

Näe, bara enligt den ord-ordningen

Ska paket 2 sorteras på motsvarande vis ?

Ja, precis som paket 1, 2 , 3, 4 osv..samma ord-följd

Ska de andra i paket 1 sorteras i samma ordning som paket 2, eller tvärtom?

Alla ska sorteras efter samma ordföljd

Hur kommer paket 3 in i det hela ?
Kan det finnas fler paket än 1,2 och 3 ?

Det kan finnas hur många paket som helst...och kan innehålla max 10 saker var.

MatteMedlem sedan aug. 20002 975 inlägg
#20

Förstår fortfarande inte.

Vill du kunna bestämma att om några valda värden (t.ex Sax Godis Tupp Jeans ) finns i paketet ska de läggas i just den ordningen?

Har det någon betydelse om de ligger först eller sist bland värdena i de olika paketen?

136 ms totalt · 3 externa anrop · v20260731065814-full.b943c234
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)