L learn Medlem sedan jan. 2005 1 130 inlägg Frågan 29 apr. 2008 15:19 #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
L learn Medlem sedan jan. 2005 1 130 inlägg Ingen som kan hjälpa mig? :(
Spontant tanke: Byt ut ä't i variabel-namnet till ett i. (Alltså kalla indexet för link istället för länk.)
L learn Medlem sedan jan. 2005 1 130 inlägg Ingen skillnad... Funktionen måste nog anpassas en del etc.
L learn Medlem sedan jan. 2005 1 130 inlägg Ingen som kan hjälpa mig? Jag lyckas inte fixa detta själv... :(
Troxy Medlem sedan mars 2004 1 505 inlägg Varifrån kommer datat?
Är det möjligtvis ett resultat av en SQL-fråga?
L learn Medlem sedan jan. 2005 1 130 inlägg 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?
S SPiN Medlem sedan mars 2000 7 896 inlägg Varför sorterar du inte i SQL-frågan?
L learn Medlem sedan jan. 2005 1 130 inlägg 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 :)
Y yador Medlem sedan mars 2004 455 inlägg Hur vill du att array:en ska se ut efter en sortering?
L learn Medlem sedan jan. 2005 1 130 inlägg 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
spango Medlem sedan juni 2000 8 205 inlägg 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?
D dreas Medlem sedan jan. 2004 140 inlägg 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.
S SPiN Medlem sedan mars 2000 7 896 inlägg 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);