Mads Madsen wrote:
> Hej
> Jeg skal på en eller anden måde have sorteret et array som er et udtræk fra
> en fil der ser således ud:
> fil.inc
> 09211100|09|21|11|00|FO|XX|XXXX||2|
> 09200100|09|20|01|00|Alm|RR|RRR||1|
> 09201000|09|20|10|00|Alm|GFGG|TYG||1|
>
> Jeg bruger nedenstående script til at få oplysningerne ud og vil gerne have
> at mine arrays bliver sorteret efter første variable (hedder det det?)
Mjaeh - det hedder variabel i ental :)
> altså
> 09211100 i hver linje således at linjerne bliver sorteret således inden de
> bliver exploderet:
> 09200100|09|20|01|00|Alm|RR|RRR||1|
> 09201000|09|20|10|00|Alm|GFGG|TYG||1|
> 09211100|09|21|11|00|FO|XX|XXXX||2|
Hejsa
Dit script gør på nuværende tidspunkt det, at det bare læser filen linie
for linie og skriver dem ud igen - i stedet skal du læse filen ind,
sortere og så skrive ud.
<?php
$sorted = array();
foreach (file('fil.inc') as $line)
{
$exploded = explode('|', $line);
$sorted[$exploded[0]] = $exploded;
}
// Nu indeholder $sorted det samme som din fil - stadig usorteret.
// Men fordi $exploded[0] er brugt som key i det associative array
// kan vi bruge ksort.
ksort($sorted);
// Nu er $sorted sorteret.
?>
Der er muligvis et problem med sorteringen, idet ksort f.eks. vil
sortere (10, 2, 1) som (1, 10, 2) - men det ser ud til, at det, du
ønsker at sortere efter, er fyldt ud med nuller, og så burde det virke...
Ellers kan du kigge på natksort i første kommentar på denne side:
http://dk.php.net/manual/en/function.ksort.php
Håber det hjalp - og så tager jeg naturligvis alle de gængse forbehold
for kode der ikke er testet og ikke virker og sårn :)
--
Mvh.
/Thomas