array nummerisch sortieren
jochen
- php
hiho,
also so merkwürdig es klingt, aber ich bekomme es nicht hin, eine array nach seinen numerischen indizes zu sortieren. die indizes(integer) wurden dynamisch erstellt, sind aber durcheinander. mit folgender eigentlich trivialer function wollte ich die nun der größe (z.b. 0-50) nach sortieren, sodass ich in einer anderen function auf auf die array-elemente per nummerischem index (z.b. arrayname[3]) zugreifen kann. das array ist zwar 2-dimensional, aber da ich auf oberster ebene einfach nach index sortieren will, kann das kaum von bedeutung sein. wenn ich testweise also index strings vergebe, funktioniert ksort schon, gebe ich aber die zahlen als string, geht es schon nicht mehr (auch mit natsort nicht) .. also ich steh vor einem rätsel:
$sortlist = array(12 => array('irgendwas','nochwas'),
0 => array('irgendwas','nochwas'),
44 => array('irgendwas','nochwas'),
2 => array('irgendwas','nochwas'),
34 => array('irgendwas','nochwas')
);
function DecideIt($a,$b){
if($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
usort($sortlist, DecideIt);
wie bekomme ich das array $sortlist jetzt in die reihenfolge 0,2,12,34,44??
ich verstehe eh nicht, warum es in PHP keine eingebaute funktion für nummerische indizes gibt ...
hoffe, mir kann jemand helfen ..
gruß der jochen
Hallo der jochen,
wie bekomme ich das array $sortlist jetzt in die reihenfolge 0,2,12,34,44??
Versuch das mal in php umzuwandeln....
array[anz]
for(i=0; i<=anz; i++)
{
if(array[i]<array[i+1])
{
h=array[i];
array[i]=array[i+1];
array[i+1]=h;
}
}
das müsste sein was du suchst...
gruß
Mick
for(i=0; i<=anz; i++)
{
if(array[i]<array[i+1])
{
h=array[i];
array[i]=array[i+1];
array[i+1]=h;
}
.. njaa nee; das ist ein netter versuch (kenn ich noch auch pascal-zeiten), nur bei dieser variante sortiert man ja nach inhalt des array[x] verglichen mit inhalt von array[x+1] ... ich muss aber die schlüssel direkt vergleichen....
gruß jochen ... weiterhin ratlos :-(
ich muss aber die schlüssel direkt vergleichen....
hmm, kannst du mir evt näher erklären was du damit meinst?
ich kann dem leider nicht ganz folgen...
was du genau suchst...
gruß
Mick