/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Sortering af array ud fra første variable ~
Fra : Mads Madsen


Dato : 21-09-05 08:06

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?) 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|

Nedenstående script:
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse:
collapse" bordercolor="#111111" width="100%">
<tr>
<td width="13%"><b><font color="#0000FF">DATO</font></b></td>
<td width="18%"><b><font color="#0000FF">TID</font></b></td>
<td width="17%"><b><font color="#0000FF">TYPE</font></b></td>
<td width="28%"><b><font color="#0000FF">NAVNE</font></b></td>
<td width="24%"><b><font color="#0000FF">RUM</font></b></td>
</tr>

<?
$fil = fopen("fil.inc", "r");
while (!feof($fil)){
$streng = fgets($fil, 4096);
if (strlen(trim($streng))==0) continue;
$data = explode("|", $streng);

echo "<tr>";
echo "<TD>";
echo "$data[2]/$data[1]";
echo "</TD>";
echo "<TD>";
echo "$data[3]:$data[4]";
echo "</TD>";
echo "<TD>";
echo "$data[5]";
echo "</TD>";
echo "<TD>";
echo "$data[6]/$data[7]$data[8]";
echo "</TD>";
echo "<TD>";
echo "$data[9]";
echo "</TD>";
echo "</TR>\n";

}
fclose($fil);
?>



 
 
Thomas Lindgaard (21-09-2005)
Kommentar
Fra : Thomas Lindgaard


Dato : 21-09-05 09:07

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

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste