webForumDet fria alternativet

Sortera flerdimensionell array

14 svar · 862 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Se även mitt tidigare inlägg

Jag har en array med länkar, uppbyggd enligt följande:

$min_array[1] = array('Länk' => array('<a href="1.html">', 'Länk 1', '</a>'), 'Beskrivning'=>'abc')

$min_array[2] = array('Länk' => array('<a href="2.html">', 'Länk 2', '</a>'), 'Beskrivning'=>'def')

Nu vill jag kunna sortera arrayen på önskad "kolumn" (key).

Jag har tidigare använt mig av usort:

function sortera_array($a, $b) {

    global $ordning;

    return strcmp($a[$ordning], $b[$ordning]);
    
}

usort($min_array, "sortera_array");

Där $ordning innehåller det jag vill sortera på. Denna funktion fungerar inte när jag vill sortera på Länk ("Länk 1" eller "Länk 2").

Hur ska jag modifiera min funktion för att den ska fungera i alla lägen?

Tack på förhand! :bire

learnMedlem sedan jan. 20051 130 inlägg
#2

Någon?

learnMedlem sedan jan. 20051 130 inlägg
#3

Ingen som kan hjälpa mig? :(

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Spontant tanke: Byt ut ä't i variabel-namnet till ett i. (Alltså kalla indexet för link istället för länk.)

learnMedlem sedan jan. 20051 130 inlägg
#5

Ingen skillnad... Funktionen måste nog anpassas en del etc.

learnMedlem sedan jan. 20051 130 inlägg
#6

Ingen som kan hjälpa mig? Jag lyckas inte fixa detta själv... :(

TroxyMedlem sedan mars 20041 505 inlägg
#7

Varifrån kommer datat?
Är det möjligtvis ett resultat av en SQL-fråga?

learnMedlem sedan jan. 20051 130 inlägg
#8

Hej

Ja, datan som sparas i en array kommer från en SQL-fråga. Någon som kan hjälpa mig?

Kanske inte går att sortera denna typ av array?

SPiNMedlem sedan mars 20007 896 inlägg
#9

Varför sorterar du inte i SQL-frågan?

learnMedlem sedan jan. 20051 130 inlägg
#10

Det som stoppas in i arrayen kommer från flera olika SQL-frågor... Jag vill gärna sortera arrayen. Snälla hjälp mig :)

yadorMedlem sedan mars 2004455 inlägg
#11

Hur vill du att array:en ska se ut efter en sortering?

learnMedlem sedan jan. 20051 130 inlägg
#12

Hmm, hur menar du nu? Den ska se ut som innan fast sorterad på det man sorterat den efter ($ordning).

learn skrev:

Jag har en array med länkar, uppbyggd enligt följande:

$min_array[1] = array('Länk' => array('<a href="1.html">', 'Länk 1', '</a>'), 'Beskrivning'=>'abc')

$min_array[2] = array('Länk' => array('<a href="2.html">', 'Länk 2', '</a>'), 'Beskrivning'=>'def')

Nu vill jag kunna sortera arrayen på önskad "kolumn" (key).

Jag har tidigare använt mig av usort:

function sortera_array($a, $b) {

    global $ordning;

    return strcmp($a[$ordning], $b[$ordning]);
    
}

usort($min_array, "sortera_array");

Där $ordning innehåller det jag vill sortera på. Denna funktion fungerar inte när jag vill sortera på Länk ("Länk 1" eller "Länk 2").

Hur ska jag modifiera min funktion för att den ska fungera i alla lägen?

Tack på förhand! :bire

spangoMedlem sedan juni 20008 205 inlägg
#13

Jag citerar mig själv i den gamla tråden:

Jag skrev:

Du får hitta på nåt fiffigt sätt att se till du jämför $a["Namn"][1] med $b["Namn"][1].

Svårare än så är det inte. Vad är problemet?

dreasMedlem sedan jan. 2004140 inlägg
#14

Funktionen i sig ska det ju inte vara några problem med, men precis som bl.a. Spango säger är det nog $ordning som är boven i dramat. Är du säker på att $ordning innehåller korrekt namn? Prova att skriva in array fältet, typ som spango skrev med $a["Namn"], för hand och se ifall du får bättre resultat.

SPiNMedlem sedan mars 20007 896 inlägg
#15

Jag förstår inte vilket fält du vill ordna på, men om du vill t.ex. sortera på texten som ska vara mellan a-taggarna (<a> och </a>), dvs. index ["Länk"][1], så fungerar följande:

<?php
function mySort($a, $b) {
	return strcmp($a["Länk"][1], $b["Länk"][1]);
}

$myArray[0] = array("Länk" => array('<a href="link1.html">', 'Länk 1', '</a>'), "Beskrivning" => 'LÄNK1');
$myArray[1] = array("Länk" => array('<a href="link3.html">', 'Länk 3', '</a>'), "Beskrivning" => 'LÄNK3');
$myArray[2] = array("Länk" => array('<a href="link2.html">', 'Länk 2', '</a>'), "Beskrivning" => 'LÄNK2');

usort($myArray, "mySort");

print_r($myArray);
156 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
152 ms — hämta tråd, inlägg och bilagor (db)