---
title: "Sortera i två kolumner från textfil"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/113310-sortera-i-två-kolumner-från-textfil"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "norra54"
published: "2004-10-10T20:23:06.000Z"
updated: "2004-10-13T10:37:34.000Z"
replies: 7
views: 543
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/113310-sortera-i-två-kolumner-från-textfil"
---

# Sortera i två kolumner från textfil

## #1 — norra54, 2004-10-10T20:23Z

Hejsan

Skulle vilja att de namn som jag sparat i en kolumn i en textfil skrivs ut i **två kolumner på sidan i alfabetisk ordning** oavsett hur de står i textfilen.

Idag använder jag koden nedan så kanske ni förstår frågan bättre. Här måste jag dock själv se till att namnen hamnar i rätt ordning vilket är lite jobbigt när nya namn ska skrivas in - betydligt enklare vore ju att kunna skriva in dem var som helst.

```php
<?
	$filename = "marke.txt";
	$fd = fopen($filename, 'r');
	
	echo '<table border="0" cellspacing="0" cellpadding="1">';
	while(!feof($fd))
	{
		$line = explode("|", fgets($fd));
		if(sizeof($line) == 2)                    //ändra efterhand
		{
			echo "<tr><td width='15' align='center' valign='top'><img src='grafik/punkt.gif' width='7' height='13'></td>
<td width='150'><b>$line[0]</b></td>
<td width='15' align='center' valign='top'><img src='grafik/punkt.gif' width='7' height='13'></td>
<td><b>$line[1]</b></td></tr>\n";
		}
	}
	echo '</table>';
	fclose($fd);
?>
```

Nuvarande textfils utseende:

```
Audi|Mercedes
BMW|Saab
Ford|Volvo
```

 
som jag alltså vill ha i en enda lång lista, typ

```
Audi
BMW
Ford
osv
```

 

Någon lösning på hur detta skulle kunna lösas mottages tacksamt.

mvh

Permalänk: https://www.webforum.nu/p/113310

## #2 — Matte, 2004-10-10T20:43Z

Spara ner i en array, och sortera sedan arrayen.
Därefter skriver du ut från arrayen.

Permalänk: https://www.webforum.nu/p/1457860

## #3 — norra54, 2004-10-11T07:49Z

Ok, men..

för en total newbie - hur skulle en sådan liten nätt kod se ut?

mvh

Permalänk: https://www.webforum.nu/p/1457968

## #4 — Matte, 2004-10-11T17:21Z

Det skulle kunna gå att göra så här:

```php
$files = array();

$content = file('marke.txt');

for ($i=0; $i<sizeof($content); $i++) {
   $line = explode("|", trim($content[$i]));
   foreach($line as $val) {
      if (!empty($val)) {
         $files[] = $val;
      }
   }
}
```

 

Eller så här:

```php
$content = file_get_contents('marke.txt');
$files = preg_split("/(\r\n|\r|\n|\\|)/", trim($content));
```

 
Samt ett antal ytterligare varianter.

Sedan sorterar du med:

```php
sort($files);
```

\[EDIT\]
Glömde att forumet kräver dubbla backslash.

Permalänk: https://www.webforum.nu/p/1458194

## #5 — norra54, 2004-10-12T08:42Z

Ok,
säg att jag väljer att använda mig av ditt översta exempel - vad echo:ar jag..? Får det inte att fungera.

mvh

Permalänk: https://www.webforum.nu/p/1458372

## #6 — Nexus86, 2004-10-12T14:08Z

Efter det andra:

```php
foreach ($files as $row) {
    echo $row . "<br/>";
}
```

Permalänk: https://www.webforum.nu/p/1458526

## #7 — Matte, 2004-10-12T20:36Z

Och vill du ha det i två kolumner kan du göra så här:

```php
if (!empty($files)) {

   echo "<table>\n";

   $file = reset($files);

   do {

     if (($file2 = next($files)) === false) {
        $file2 = '&nbsp;';
     }

     echo "
       <tr>
       <td>$file</td>
       <td>$file2</td>
       </tr>
     ";

   } while($file = next($files));

   echo "\n</table>\n";

}
```

Permalänk: https://www.webforum.nu/p/1458774

## #8 — norra54, 2004-10-13T10:37Z

Tackar, båda

mvh

Permalänk: https://www.webforum.nu/p/1458958

---

Tråden på webben: https://www.webforum.nu/amne/php/113310-sortera-i-två-kolumner-från-textfil
